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 })); } }