import { ICampaignModelAttributes } from "./campaign.entity"; import { ICityModelAttributes } from "./city.entity"; import { IEventModelAttributes } from "./event.entity"; import { IOrganizerModelAttributes } from "./organizer.entity"; import { ISeatGroupModelAttributes } from "./seatGroup.entity"; import { IVenueModelAttributes } from "./venue.entity"; export interface ISessionBlockDefaultModelAttributes { _id?: string; price: number; isSoldOut: boolean; campaigns: string[] | ICampaignModelAttributes[]; isActive: boolean; title: string; } export interface ISessionBlockSeatModelAttributes extends ISessionBlockDefaultModelAttributes { type: "SEAT"; seatGroup: string | ISeatGroupModelAttributes; } export interface ISessionBlockVipModelAttributes extends ISessionBlockDefaultModelAttributes { type: "VIP"; capacity: number; } export type ISessionBlockModelAttributes = ISessionBlockSeatModelAttributes | ISessionBlockVipModelAttributes; export interface ISessionModelAttributes { _id: string; event: string | IEventModelAttributes; city: string | ICityModelAttributes; venue: string | IVenueModelAttributes; blocks: ISessionBlockModelAttributes[]; organizer: string | IOrganizerModelAttributes; closeSellDate: Date; isSoldOut: boolean; lastSoldDate: Date; isSellSoon: boolean; status: "pending" | "approved"; hasSecretSell: boolean; isDonation: boolean; isFree: boolean; hasSeat: boolean; isDeleted?: boolean; deletedAt?: Date | null; createdAt?: Date; updatedAt?: Date; }