47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate';
|
|
import { UserAggregate } from '../../../Domain/User/UserAggregate';
|
|
import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto';
|
|
|
|
export class DeckMapper {
|
|
static toShortDto(deck: DeckAggregate, userId?: string): ShortDeckDto {
|
|
return {
|
|
id: deck.id,
|
|
name: deck.name,
|
|
type: deck.type,
|
|
playedNumber: deck.playedNumber,
|
|
ctype: deck.ctype,
|
|
cardCount: deck.cards.length,
|
|
creator: deck.user?.username || 'Unknown',
|
|
creationdate: deck.creationdate,
|
|
editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined
|
|
};
|
|
}
|
|
|
|
static toDetailDto(deck: DeckAggregate): DetailDeckDto {
|
|
return {
|
|
id: deck.id,
|
|
name: deck.name,
|
|
type: deck.type,
|
|
userid: deck.userid,
|
|
creationdate: deck.creationdate,
|
|
cards: deck.cards,
|
|
playedNumber: deck.playedNumber,
|
|
ctype: deck.ctype,
|
|
};
|
|
}
|
|
|
|
static toShortDtoList(decks: DeckAggregate[], userId?: string): ShortDeckDto[] {
|
|
return decks.map(deck => ({
|
|
id: deck.id,
|
|
name: deck.name,
|
|
type: deck.type,
|
|
playedNumber: deck.playedNumber,
|
|
ctype: deck.ctype,
|
|
cardCount: deck.cards.length,
|
|
creator: deck.user?.username || 'Unknown',
|
|
creationdate: deck.creationdate,
|
|
editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined
|
|
}));
|
|
}
|
|
}
|