/* Options:
Date: 2025-04-08 07:39:12
Version: 5.140
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.clubmanagercentral.com

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: ViewLicenseLicenses.*
//ExcludeTypes: 
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

import java.math.*
import java.util.*
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@Route("/api/Query/LicenseLicenses")
@AutoQueryViewer(Description="", IconUrl="octicon:database", Title="LicenseLicenses")
open class ViewLicenseLicenses : QueryDb<LicenseLicensesInstance>(), IReturn<QueryResponse<LicenseLicensesInstance>>
{
    companion object { private val responseType = object : TypeToken<QueryResponse<LicenseLicensesInstance>>(){}.type }
    override fun getResponseType(): Any? = ViewLicenseLicenses.responseType
}

@DataContract
open class QueryResponse<T>
{
    @DataMember(Order=1)
    var Offset:Int? = null

    @DataMember(Order=2)
    var Total:Int? = null

    @DataMember(Order=3)
    var Results:ArrayList<T> = ArrayList<T>()

    @DataMember(Order=4)
    var Meta:HashMap<String,String> = HashMap<String,String>()

    @DataMember(Order=5)
    var ResponseStatus:ResponseStatus? = null
}

open class QueryDb<T> : QueryBase()
{
}

open class LicenseLicensesInstance
{
    var LicenseId:Int? = null
    var FullReference:String? = null
    var LicenseReference:String? = null
    var LicenseNumber:Int? = null
    var LicenseStartDate:Date? = null
    var LicenseRenewalDate:Date? = null
    var IssueNo:Int? = null
    var CreatedDate:Date? = null
    var CreatedByUserId:Int? = null
    var Member:MemberInstance? = null
    @References(MemberInstance.class)
    var MemberId:Int? = null
}

open class LossReasonInstance
{
    var LossReasonId:Int? = null
    var Reason:String? = null
    var Deleted:Boolean? = null
    var Demo:Boolean? = null
    var Selectable:Boolean? = null
}

open class MemberInstance
{
    var MemberId:Int? = null
    var MemberType:Int? = null
    var MembershipNumber:String? = null
    var CardNumber:String? = null
    var CompanyName:String? = null
    var Surname:String? = null
    var Forenames:String? = null
    var Title:String? = null
    var Gender:Int? = null
    var DateOfBirth:Date? = null
    var Address1:String? = null
    var Address2:String? = null
    var City:String? = null
    var County:String? = null
    var Postcode:String? = null
    var HomePhone:String? = null
    var MobilePhone:String? = null
    var EmailAddress:String? = null
    var EmailOptOut:Boolean? = null
    var SmsOptOut:Boolean? = null
    var PhoneOptOut:Boolean? = null
    var LetterOptOut:Boolean? = null
    var DirectDebitAccountHolder:String? = null
    var DirectDebitAccountNumber:String? = null
    var DirectDebitSortCode:String? = null
    var JoinedDate:Date? = null
    var DirectDebitBankAddress:String? = null
    var FullName:String? = null
    var ExternalReference:String? = null
    var Photo:ByteArray? = null
    var PhotoModifiedDate:Date? = null
    var Notes:String? = null
    var Deleted:Boolean? = null
    var Demo:Boolean? = null
    var UseExternalStatus:Boolean? = null
    var ExternalStatus:Int? = null
    var FreeText:String? = null
    var MemberKey:UUID? = null
    var Balance:BigDecimal? = null
    var CreditLimit:BigDecimal? = null
    var CreatedDate:Date? = null
    var ModifiedDate:Date? = null
    var DeletedDate:Date? = null
    var ExternalSource:Int? = null
    var RetentionMetric:BigDecimal? = null
    var MonthlyAttendanceFrequency:BigDecimal? = null
    var AssignedToUserId:Int? = null
    var CreatedByUserId:Int? = null
    var DeletedByUserId:Int? = null
    var LossReason:LossReasonInstance? = null
    @References(LossReasonInstance.class)
    var LossReasonId:Int? = null

    var WonOrLost:Int? = null
    var WonOrLostDate:Date? = null
    var GiftAidPermission:Boolean? = null
    var PhotoPermission:Boolean? = null
    var FirstAidPermission:Boolean? = null
    var EmergencyContact:String? = null
    var WonOrLostByUser:UserInstance? = null
    @References(UserInstance.class)
    var WonOrLostByUserId:Int? = null

    var AgreedToTerms:Date? = null
    var OnlineBookingBanned:Boolean? = null
    var Country:String? = null
    var FingerprintEnrolled:Date? = null
    var LastPaymentAmount:BigDecimal? = null
    var Pin:String? = null
    var ProspectingPoints:Int? = null
    var AchievementPoints:Int? = null
    var ParentForenames:String? = null
    var ParentSurname:String? = null
}

open class UserInstance
{
    var UserId:Int? = null
    var UserName:String? = null
    var Name:String? = null
    var Email:String? = null
    var MobilePhone:String? = null
    var Enabled:Boolean? = null
    var LastLogin:Date? = null
    var Created:Date? = null
    var Training:Boolean? = null
    var Deleted:Boolean? = null
    var CoursesCompleted:Int? = null
    var DisplayHomeNotification:Boolean? = null
    var TwoFactorEnabled:Boolean? = null
    var EmailConfirmed:Boolean? = null
    var MobilePhoneConfirmed:Boolean? = null
    var Notifications:Boolean? = null
    var ChangePassword:Date? = null
    var Activated:Date? = null
}

@DataContract
open class QueryBase
{
    @DataMember(Order=1)
    var Skip:Int? = null

    @DataMember(Order=2)
    var Take:Int? = null

    @DataMember(Order=3)
    var OrderBy:String? = null

    @DataMember(Order=4)
    var OrderByDesc:String? = null

    @DataMember(Order=5)
    var Include:String? = null

    @DataMember(Order=6)
    var Fields:String? = null

    @DataMember(Order=7)
    var Meta:HashMap<String,String> = HashMap<String,String>()
}