import { ILocation as IEventLocation, IName as IEventName, ISuperEvent } from '../event/screeningEvent'; import { IWorkPerformed } from '../event/eventSeries'; import { EventType } from '../eventType'; import { IMultilingualString } from '../multilingualString'; import { TicketType, ISeat as IReservationSeat, IReservation as IBaseReservation, IAvailableReservationStatusType, ITicket } from '../reservation'; import { ReservationStatusType } from '../reservationStatusType'; import { ReservationType } from '../reservationType'; import { SortType } from '../sortType'; export type IOptimizedWorkPerformedLegacy = Pick & { name?: string | IMultilingualString; }; /** * 予約対象施設コンテンツ */ export type IOptimizedSuperEventLegacy = Pick & { workPerformed: IOptimizedWorkPerformedLegacy; /** * COA予約でのみ使用 */ identifier?: never; /** * COA予約でのみ使用 */ alternativeHeadline?: never; /** * COA予約でのみ使用 */ duration?: never; /** * COA予約でのみ使用 */ coaInfo?: never; }; /** * 予約対象イベント */ export interface IReservationForLegacy { endDate: Date; id: string; location: IEventLocation; name: IEventName; startDate: Date; superEvent: IOptimizedSuperEventLegacy; typeOf: EventType.ScreeningEvent; doorTime?: Date; /** * COA予約でのみ使用 */ identifier?: never; /** * COA予約でのみ使用 */ coaInfo?: never; } export type IMinimizedWorkPerformed = Pick & { duration?: never; contentRating?: never; name?: never; }; export type IMinimizedMovieTheater = Pick & { name?: never; }; /** * 予約対象施設コンテンツ */ export type IMinimizedSuperEvent = Pick & { location: IMinimizedMovieTheater; workPerformed: IMinimizedWorkPerformed; } & { additionalProperty?: never; name?: never; soundFormat?: never; headline?: never; }; export type IMinimizedRoom = Pick & { name?: never; address?: never; maximumAttendeeCapacity?: never; }; /** * 最小化された予約対象イベント * 2026-04-05~ */ export interface IReservationForMinimized { id: string; startDate: Date; typeOf: EventType.ScreeningEvent; endDate: Date; location: IMinimizedRoom; superEvent: IMinimizedSuperEvent; name?: never; doorTime?: never; } export interface ISubReservation { reservedTicket: { typeOf: TicketType; ticketedSeat: IReservationSeat; }; } export type IReservedTicket = ITicket & { /** * 予約ドキュメント内のticketTypeは廃止済(2026-03-26~) */ ticketType?: never; }; /** * イベント予約 */ export interface IReservation extends IBaseReservation { bookingTime: Date; id: string; reservationFor: IReservationForMinimized; reservationNumber: string; reservationStatus: ReservationStatusType.ReservationCancelled | ReservationStatusType.ReservationConfirmed; reservedTicket: IReservedTicket; subReservation?: ISubReservation[]; typeOf: ReservationType.EventReservation; issuedThrough?: never; priceCurrency?: never; numSeats?: never; } export interface IReservationForSearchConditions { typeOf?: EventType; id?: string | { $eq?: string; }; ids?: string[]; location?: { ids?: string[]; branchCodes?: string[]; }; superEvent?: { id?: string; ids?: string[]; workPerformed?: { ids?: string[]; identifiers?: string[]; }; location?: { ids?: string[]; branchCodes?: string[]; }; }; startFrom?: Date; startThrough?: Date; endFrom?: Date; endThrough?: Date; } /** * チケットホルダー検索条件 */ export interface IUnderNameSearchConditions { id?: string; name?: string | { $options?: string; $regex?: string; }; email?: string | { $options?: string; $regex?: string; }; telephone?: string; givenName?: string | { $options?: string; $regex?: string; }; familyName?: string | { $options?: string; $regex?: string; }; } export interface IBrokerSearchConditions { id?: string; } /** * 予約チケット検索条件 */ export interface IReservedTicketSearchConditions { /** * 座席 */ ticketedSeat?: { seatNumbers?: string[]; seatRows?: string[]; seatSections?: string[]; seatingType?: { $in?: string[]; }; }; /** * discontinue ticketType(2026-05-06~) */ ticketType?: never; } export interface IStringSearchConditions { $eq?: string; $ne?: string; $in?: string[]; $nin?: string[]; $options?: string; $regex?: string; } /** * ソート条件 */ export interface ISortOrder { bookingTime?: SortType; } /** * 検索条件 */ export interface ISearchConditions { typeOf: ReservationType.EventReservation; limit?: number; page?: number; sort?: ISortOrder; project?: { id?: { $eq?: string; }; }; provider?: { id?: { $eq?: string; }; }; /** * IDリスト */ ids?: string[]; /** * ID */ id?: IStringSearchConditions; /** * 予約番号リスト */ reservationNumbers?: string[]; /** * 予約番号 */ reservationNumber?: string | IStringSearchConditions; /** * 追加チケットテキスト */ additionalTicketText?: string | IStringSearchConditions; broker?: IBrokerSearchConditions; reservationStatus?: { $eq?: IAvailableReservationStatusType; $ne?: IAvailableReservationStatusType; $in?: IAvailableReservationStatusType[]; }; /** * 予約ステータスリスト */ reservationStatuses?: IAvailableReservationStatusType[]; bookingFrom?: Date; bookingThrough?: Date; modifiedFrom?: Date; modifiedThrough?: Date; /** * 予約チケット */ reservedTicket?: IReservedTicketSearchConditions; /** * チケットホルダー */ underName?: IUnderNameSearchConditions; /** * チェックイン(発券)済かどうか */ checkedIn?: boolean; /** * 出席(入場)済かどうか */ attended?: boolean; /** * 予約対象 */ reservationFor?: IReservationForSearchConditions; }