/* Options:
Date: 2025-04-09 16:50:13
Version: 5.140
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.clubmanagercentral.com

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


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

// @DataContract
export class QueryBase
{
    // @DataMember(Order=1)
    public Skip?: number;

    // @DataMember(Order=2)
    public Take?: number;

    // @DataMember(Order=3)
    public OrderBy: string;

    // @DataMember(Order=4)
    public OrderByDesc: string;

    // @DataMember(Order=5)
    public Include: string;

    // @DataMember(Order=6)
    public Fields: string;

    // @DataMember(Order=7)
    public Meta: { [index: string]: string; };

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

export class QueryDb<T> extends QueryBase
{

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

export class LossReasonInstance
{
    public LossReasonId: number;
    public Reason: string;
    public Deleted: boolean;
    public Demo: boolean;
    public Selectable: boolean;

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

export class UserInstance
{
    public UserId: number;
    public UserName: string;
    public Name: string;
    public Email: string;
    public MobilePhone: string;
    public Enabled: boolean;
    public LastLogin?: string;
    public Created: string;
    public Training: boolean;
    public Deleted: boolean;
    public CoursesCompleted: number;
    public DisplayHomeNotification?: boolean;
    public TwoFactorEnabled: boolean;
    public EmailConfirmed: boolean;
    public MobilePhoneConfirmed: boolean;
    public Notifications: boolean;
    public ChangePassword?: string;
    public Activated?: string;

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

export class MemberInstance
{
    public MemberId: number;
    public MemberType: number;
    public MembershipNumber: string;
    public CardNumber: string;
    public CompanyName: string;
    public Surname: string;
    public Forenames: string;
    public Title: string;
    public Gender: number;
    public DateOfBirth?: string;
    public Address1: string;
    public Address2: string;
    public City: string;
    public County: string;
    public Postcode: string;
    public HomePhone: string;
    public MobilePhone: string;
    public EmailAddress: string;
    public EmailOptOut: boolean;
    public SmsOptOut: boolean;
    public PhoneOptOut: boolean;
    public LetterOptOut: boolean;
    public DirectDebitAccountHolder: string;
    public DirectDebitAccountNumber: string;
    public DirectDebitSortCode: string;
    public JoinedDate?: string;
    public DirectDebitBankAddress: string;
    public FullName: string;
    public ExternalReference: string;
    public Photo: string;
    public PhotoModifiedDate?: string;
    public Notes: string;
    public Deleted: boolean;
    public Demo: boolean;
    public UseExternalStatus: boolean;
    public ExternalStatus: number;
    public FreeText: string;
    public MemberKey?: string;
    public Balance: number;
    public CreditLimit: number;
    public CreatedDate: string;
    public ModifiedDate?: string;
    public DeletedDate?: string;
    public ExternalSource: number;
    public RetentionMetric?: number;
    public MonthlyAttendanceFrequency?: number;
    public AssignedToUserId?: number;
    public CreatedByUserId?: number;
    public DeletedByUserId?: number;
    public LossReason: LossReasonInstance;
    // @References("typeof(ClubManager.Api.Services.Query.LossReasonInstance)")
    public LossReasonId?: number;

    public WonOrLost?: number;
    public WonOrLostDate?: string;
    public GiftAidPermission: boolean;
    public PhotoPermission?: boolean;
    public FirstAidPermission?: boolean;
    public EmergencyContact: string;
    public WonOrLostByUser: UserInstance;
    // @References("typeof(ClubManager.Api.Services.Query.UserInstance)")
    public WonOrLostByUserId?: number;

    public AgreedToTerms?: string;
    public OnlineBookingBanned: boolean;
    public Country: string;
    public FingerprintEnrolled?: string;
    public LastPaymentAmount?: number;
    public Pin: string;
    public ProspectingPoints: number;
    public AchievementPoints: number;
    public ParentForenames: string;
    public ParentSurname: string;

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

export class PaymentMethodInstance
{
    public PaymentMethodId: number;
    public PaymentMethodToken: string;
    public CardType: string;
    public CardNumber: string;
    public Expiry: string;
    public Created: string;
    public Deleted?: string;
    public IsDefault: boolean;
    public PaymentMethodUse: number;
    public PaymentGatewayId: number;
    public Member: MemberInstance;
    // @References("typeof(ClubManager.Api.Services.Query.MemberInstance)")
    public MemberId: number;

    public Failures: number;
    public Cancelled?: string;
    public CancelledBy?: number;
    public Identifier: string;
    public Settings: string;
    public UseMemberDetails: boolean;

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

export class PaymentAllInstance
{
    // @References("typeof(ClubManager.Api.Services.Query.PaymentInstance)")
    public PaymentId: number;

    public DueDate: string;
    public PaidDate?: string;
    public Amount: number;
    // @References("typeof(ClubManager.Api.Services.Query.MembershipInstance)")
    public MembershipId?: number;

    public TransactionId?: number;
    public PaymentMethod: number;
    public PaymentType: number;
    public PaymentTypeName: string;
    public PaymentMethodName: string;
    public Name: string;
    public Deleted: boolean;
    public Demo: boolean;
    public Member: MemberInstance;
    // @References("typeof(ClubManager.Api.Services.Query.MemberInstance)")
    public MemberId: number;

    public IsLocked: boolean;
    public IsExternallyCollected: boolean;
    public MembershipNumber: string;
    public FullName: string;
    public HomePhone: string;
    public PaymentStatus: string;
    public EndDate?: string;
    public ContractEndDate?: string;
    public MembershipName: string;
    public MembershipStartDate?: string;
    public MembershipDeleted?: boolean;
    public ProviderId: string;
    public PaymentGatewayToken: string;
    public ProviderState: number;
    public PaymentState: number;
    public PaymentMethodReference: PaymentMethodInstance;
    // @References("typeof(ClubManager.Api.Services.Query.PaymentMethodInstance)")
    public PaymentMethodId?: number;

    public HasLivePaymentMethod?: boolean;
    public StatusMessage: string;
    // @References("typeof(ClubManager.Api.Services.Query.PaymentInstance)")
    public ParentPaymentId?: number;

    // @References("typeof(ClubManager.Api.Services.Query.PaymentRecurrenceInstance)")
    public PaymentRecurrenceId?: number;

    public PaymentGatewayName: string;
    public StatementName: string;
    public SubmissionDate?: string;
    public SubmissionRetries?: number;

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

// @DataContract
export class ResponseError
{
    // @DataMember(Order=1)
    public ErrorCode: string;

    // @DataMember(Order=2)
    public FieldName: string;

    // @DataMember(Order=3)
    public Message: string;

    // @DataMember(Order=4)
    public Meta: { [index: string]: string; };

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

// @DataContract
export class ResponseStatus
{
    // @DataMember(Order=1)
    public ErrorCode: string;

    // @DataMember(Order=2)
    public Message: string;

    // @DataMember(Order=3)
    public StackTrace: string;

    // @DataMember(Order=4)
    public Errors: ResponseError[];

    // @DataMember(Order=5)
    public Meta: { [index: string]: string; };

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

// @DataContract
export class QueryResponse<T>
{
    // @DataMember(Order=1)
    public Offset: number;

    // @DataMember(Order=2)
    public Total: number;

    // @DataMember(Order=3)
    public Results: T[];

    // @DataMember(Order=4)
    public Meta: { [index: string]: string; };

    // @DataMember(Order=5)
    public ResponseStatus: ResponseStatus;

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

// @Route("/api/Query/PaymentAll")
// @AutoQueryViewer(Description="", IconUrl="octicon:database", Title="PaymentAll")
export class ViewPaymentAll extends QueryDb<PaymentAllInstance> implements IReturn<QueryResponse<PaymentAllInstance>>
{

    public constructor(init?: Partial<ViewPaymentAll>) { super(init); (Object as any).assign(this, init); }
    public getTypeName() { return 'ViewPaymentAll'; }
    public getMethod() { return 'GET'; }
    public createResponse() { return new QueryResponse<PaymentAllInstance>(); }
}