import { Client } from '../client/types'; import { Location, Program } from '../site/types'; import { Resource, SessionType } from '../types'; import { Visit } from '../visit/types'; export interface Class { ClassScheduleId: number; Visits: Visit[]; Clients: Client[]; Location: Location; Resource: Resource; MaxCapacity: number; WebCapacity: number; TotalBooked: number; TotalBookedWaitlist: number; WebBooked: number; SemesterId: number; IsCanceled: boolean; Substitute: boolean; Active: boolean; IsWaitlistAvailable: boolean; IsEnrolled: boolean; HideCancel: boolean; Id: number; IsAvailable: boolean; StartDateTime: string; EndDateTime: string; LastModifiedDateTime: string; ClassDescription: ClassDescription; Staff: object; BookingWindow: BookingWindow; BookingStatus: 'PaymentRequired' | 'BookAndPayLater' | 'Free'; VirtualStreamLink: string; } export interface ClassDescription { Active: boolean; Description: string; Id: number; ImageURL: string; LastUpdated: string; Level: { Id: number; Name: string; Description: string; }; Name: string; Notes: string; Prereq: string; Program: Program; SessionType: SessionType; Category: string; CategoryId: number; Subcategory: string; SubcategoryId: number; } export interface BookingWindow { StartDateTime: string; EndDateTime: string; DailyStartTime: string; DailyEndTime: string; } export interface GetClassesParameters { ClassDescriptionIds?: number[]; ClassIds?: number[]; StaffIds?: number[]; StartDateTime?: string; EndDateTime?: string; ClientId?: string; Clients?: Array; ProgramIds?: number[]; SessionTypeIds?: number[]; LocationIds?: number[]; SemesterIds?: number[]; HideCanceledClasses?: boolean; SchedulingWindow?: boolean; LastModifiedDate?: string; } export interface AddClientToClassParameters { ClientId: string; ClassId: number; Test?: boolean; RequirePayment?: boolean; Waitlist?: boolean; SendEmail?: boolean; WaitlistEntryId?: number; ClientServiceID?: number; CrossRegionalBooking?: boolean; CrossRegionalBookingClientServiceSiteId?: number; } export interface AddClientToClassResponse { AppointmentId: number; AppointmentGenderPreference: 'None' | 'Female' | 'Male'; AppointmentStatus: 'None' | 'Requested' | 'Booked' | 'Completed' | 'Confirmed' | 'Arrived' | 'NoShow' | 'Cancelled' | 'LateCancelled'; ClassId: number; ClientId: string; StartDateTime: string; EndDateTime: string; Id: number; LastModifiedDateTime: string; LateCancelled: boolean; LocationId: number; MakeUp: boolean; Name: string; ServiceId: number; ServiceName: string; ProductId: number; SignedIn: boolean; StaffId: number; WebSignup: boolean; Action: 'None' | 'Added' | 'Updated' | 'Failed' | 'Removed'; CrossRegionalBookingPerformed: boolean; SiteId: number; WaitlistEntryId: number; } export interface RemoveClientFromClassParameters { ClientId: string; ClassId: number; Test?: boolean; SendEmail?: boolean; LateCancel?: boolean; }