import { Ticket } from '../ticket.entity';

export class TicketListItemDto {
  id: number;
  name: string;
  description: string;
  licenseeId: number;
  createdOn: number;
  updatedOn: number;
  isUnread: boolean;

  constructor(partial: Partial<TicketListItemDto>) {
    Object.assign(this, partial);
  }

  static async createFromEntity(entity: Ticket): Promise<TicketListItemDto> {
    return new TicketListItemDto({
      id: entity.id,
      name: entity.name,
      description: (await entity.messages)[0].body,
      licenseeId: (await entity.licensee).id,
      createdOn: entity.createdOn.getTime(),
      updatedOn: entity.updatedOn.getTime(),
      isUnread: await entity.hasUnread(),
    });
  }
}
