import { ApiProperty, OmitType, PickType } from '@nestjs/swagger'; import { Type } from 'class-transformer'; import { StoredItemTransaction } from 'src/objects/storage/entities/item-transaction.entity'; import { Item } from 'src/objects/storage/entities/item.entity'; import { StoredItem } from 'src/objects/storage/entities/stored-item.entity'; import { StorageActorResponse } from './storage-response.dto'; export class StorageItemResponseDto extends OmitType(Item, [ 'instances', 'addedBy', ]) { @ApiProperty({ type: StorageActorResponse }) addedBy: StorageActorResponse; } export class StorageItemSearchResponseDto extends PickType(Item, [ 'id', 'displayName', 'type', 'barcode', 'image', 'createdAt', ]) {} export class StorageTransactionResponseDto extends OmitType( StoredItemTransaction, ['storedItem', 'actor'], ) {} export class StorageTransactionWithActorResponseDto extends StorageTransactionResponseDto { @ApiProperty({ type: StorageActorResponse }) actor: StorageActorResponse; } export class StorageStoredItemResponseDto extends OmitType(StoredItem, [ 'addedBy', 'transactions', 'storage', 'building', 'item', ]) { @ApiProperty({ type: StorageActorResponse }) addedBy: StorageActorResponse; @ApiProperty({ type: StorageItemResponseDto }) @Type(() => StorageItemResponseDto) item: StorageItemResponseDto; @ApiProperty({ type: StorageTransactionResponseDto, isArray: true }) @Type(() => StorageTransactionResponseDto) transactions: StorageTransactionResponseDto[]; constructor(obj: Partial) { super(obj); Object.assign(this, obj); } } export class StorageStoredItemTransactionDto extends OmitType( StoredItemTransaction, ['storedItem'], ) { @ApiProperty({ type: StorageStoredItemResponseDto }) @Type(() => StorageStoredItemResponseDto) storedItem: StorageStoredItemResponseDto; }