/* Options:
Date: 2025-04-12 14:30:01
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.bokamera.se

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: DeleteBookingUserQueue.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

export class GroupBookingSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<GroupBookingSettings>) { (Object as any).assign(this, init); }
}

export class MultipleResourceSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<MultipleResourceSettings>) { (Object as any).assign(this, init); }
}

export class BookingUserQueuePriceResponse
{
    public CompanyId: string;
    public Id: number;
    public BookingUserQueueId: number;
    public ServicePriceId?: number;
    public Quantity?: number;

    public constructor(init?: Partial<BookingUserQueuePriceResponse>) { (Object as any).assign(this, init); }
}

export class ServiceInfoResponse
{
    public Id: number;
    public Name: string;
    public Description: string;
    public ImageUrl: string;
    public LengthInMinutes?: number;
    public MaxNumberOfSpotsPerBooking: number;
    public MinNumberOfSpotsPerBooking: number;
    public GroupBooking: GroupBookingSettings;
    public MultipleResource: MultipleResourceSettings;
    public IsGroupBooking: boolean;
    public IsPaymentEnabled: boolean;

    public constructor(init?: Partial<ServiceInfoResponse>) { (Object as any).assign(this, init); }
}

export class CompanyInfoResponse
{
    public Id: string;
    public Name: string;
    public LogoType: string;
    public Category: string;
    public Street1: string;
    public Street2: string;
    public ZipCode: string;
    public City: string;
    public CountryId: string;
    public Longitude: string;
    public Latitude: string;
    public Phone: string;
    public Email: string;
    public HomePage: string;
    public SitePath: string;

    public constructor(init?: Partial<CompanyInfoResponse>) { (Object as any).assign(this, init); }
}

export class BookingUserQueueItemResponse
{
    public BookingUserQueueId: number;
    public CompanyId: string;
    public CustomerId: string;
    public ServiceId: number;
    public From: string;
    public To: string;
    public StatusCode: number;
    public StatusName: string;
    public SendConfirmationTime?: string;
    public Quantities: BookingUserQueuePriceResponse[];
    public Service: ServiceInfoResponse;
    public Company: CompanyInfoResponse;

    public constructor(init?: Partial<BookingUserQueueItemResponse>) { (Object as any).assign(this, init); }
}

// @Route("/bookinguserqueue/{Id}", "DELETE")
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class DeleteBookingUserQueue implements IReturn<BookingUserQueueItemResponse>
{
    /** @description Id of the booking user queue */
    // @ApiMember(Description="Id of the booking user queue", IsRequired=true, ParameterType="path")
    public Id: number;

    /** @description  */
    // @ApiMember(Description="", IsRequired=true)
    public CompanyId: string;

    /** @description  */
    // @ApiMember(Description="", IsRequired=true)
    public CustomerId: string;

    public constructor(init?: Partial<DeleteBookingUserQueue>) { (Object as any).assign(this, init); }
    public getTypeName() { return 'DeleteBookingUserQueue'; }
    public getMethod() { return 'DELETE'; }
    public createResponse() { return new BookingUserQueueItemResponse(); }
}