/* Options:
Date: 2025-05-18 04:29:46
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

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


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

// @DataContract
export class BaseRequest
{
    /** @description This is your AIM API Key provided by Tri-Tech */
    // @DataMember
    // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")
    public ApiKey: string;

    // @DataMember
    // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")
    public OAuthToken: string;

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

// @DataContract
export class BaseSecureRequest extends BaseRequest
{
    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")
    public Token: string;

    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")
    public DeviceId: string;

    /** @description  */
    // @DataMember
    // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")
    public AppId: string;

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

// @DataContract
export class TeeSlotGeneric
{
    // @DataMember
    public Id: number;

    // @DataMember
    public DateTime: string;

    // @DataMember
    public Cost: number;

    // @DataMember
    public Cost2: number;

    // @DataMember
    public Cost3: number;

    // @DataMember
    public SlotsOpen: number;

    // @DataMember
    public MinSlots: number;

    // @DataMember
    public Course: string;

    // @DataMember
    public CourseTopic: string;

    // @DataMember
    public Location: string;

    // @DataMember
    public Note: string;

    // @DataMember
    public Has18Holes: boolean;

    // @DataMember
    public WebId: string;

    // @DataMember
    public StartingOnBack9: boolean;

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

// @DataContract
export class BaseResponse
{
    /** @description  */
    // @DataMember
    // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")
    public Status: BaseResponseResult;

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

// @DataContract
export class GetTeeSlotsResponse extends BaseResponse
{
    // @DataMember
    public TeeSlots: TeeSlotGeneric[];

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

/** @description GetTeeSlotsRequires active-e Tee-Sheet Service */
// @Route("/GetTeeSlots", "POST, GET")
// @DataContract
export class GetTeeSlotsRequest extends BaseSecureRequest implements IReturn<GetTeeSlotsResponse>
{
    // @DataMember
    public DateFrom: string;

    // @DataMember
    public DateTo: string;

    // @DataMember
    public TimeFrom?: string;

    // @DataMember
    public TimeTo?: string;

    // @DataMember
    public Course: string;

    // @DataMember
    public Location: string;

    // @DataMember
    public WebId: string;

    // @DataMember
    public SlotsRequired?: number;

    // @DataMember
    public ShowOpenSlots?: boolean;

    // @DataMember
    public ShowReservedSlots?: boolean;

    // @DataMember
    public Show9HoleSlots?: boolean;

    // @DataMember
    public Show18HoleSlots?: boolean;

    // @DataMember
    public ShowFront9?: boolean;

    // @DataMember
    public ShowBack9?: boolean;

    public constructor(init?: Partial<GetTeeSlotsRequest>) { super(init); (Object as any).assign(this, init); }
    public getTypeName() { return 'GetTeeSlotsRequest'; }
    public getMethod() { return 'POST'; }
    public createResponse() { return new GetTeeSlotsResponse(); }
}