/* Options:
Date: 2025-04-06 16:21:25
SwiftVersion: 5.0
Version: 5.140
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.clubmanagercentral.com

//BaseClass: 
//AddModelExtensions: True
//AddServiceStackTypes: True
IncludeTypes: ViewMemberGetMembers.*
//ExcludeTypes: 
//ExcludeGenericBaseTypes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: Foundation,ServiceStack
*/

import Foundation
import ServiceStack

// @Route("/api/Query/MemberGetMembers")
// @AutoQueryViewer(Description="", IconUrl="octicon:database", Title="MemberGetMembers")
public class ViewMemberGetMembers : QueryDb<MemberGetMembersInstance>, IReturn
{
    public typealias Return = QueryResponse<MemberGetMembersInstance>

    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

public class LossReasonInstance : Codable
{
    public var lossReasonId:Int?
    public var reason:String?
    public var deleted:Bool?
    public var demo:Bool?
    public var selectable:Bool?

    required public init(){}
}

public class MemberInstance : Codable
{
    public var memberId:Int?
    public var memberType:Int?
    public var membershipNumber:String?
    public var cardNumber:String?
    public var companyName:String?
    public var surname:String?
    public var forenames:String?
    public var title:String?
    public var gender:Int?
    public var dateOfBirth:Date?
    public var address1:String?
    public var address2:String?
    public var city:String?
    public var county:String?
    public var postcode:String?
    public var homePhone:String?
    public var mobilePhone:String?
    public var emailAddress:String?
    public var emailOptOut:Bool?
    public var smsOptOut:Bool?
    public var phoneOptOut:Bool?
    public var letterOptOut:Bool?
    public var directDebitAccountHolder:String?
    public var directDebitAccountNumber:String?
    public var directDebitSortCode:String?
    public var joinedDate:Date?
    public var directDebitBankAddress:String?
    public var fullName:String?
    public var externalReference:String?
    public var photo:[UInt8] = []
    public var photoModifiedDate:Date?
    public var notes:String?
    public var deleted:Bool?
    public var demo:Bool?
    public var useExternalStatus:Bool?
    public var externalStatus:Int?
    public var freeText:String?
    public var memberKey:String?
    public var balance:Double?
    public var creditLimit:Double?
    public var createdDate:Date?
    public var modifiedDate:Date?
    public var deletedDate:Date?
    public var externalSource:Int?
    public var retentionMetric:Double?
    public var monthlyAttendanceFrequency:Double?
    public var assignedToUserId:Int?
    public var createdByUserId:Int?
    public var deletedByUserId:Int?
    public var lossReason:LossReasonInstance?
    // @References(typeof(LossReasonInstance))
    public var lossReasonId:Int?

    public var wonOrLost:Int?
    public var wonOrLostDate:Date?
    public var giftAidPermission:Bool?
    public var photoPermission:Bool?
    public var firstAidPermission:Bool?
    public var emergencyContact:String?
    public var wonOrLostByUser:UserInstance?
    // @References(typeof(UserInstance))
    public var wonOrLostByUserId:Int?

    public var agreedToTerms:Date?
    public var onlineBookingBanned:Bool?
    public var country:String?
    public var fingerprintEnrolled:Date?
    public var lastPaymentAmount:Double?
    public var pin:String?
    public var prospectingPoints:Int?
    public var achievementPoints:Int?
    public var parentForenames:String?
    public var parentSurname:String?

    required public init(){}
}

public class MemberGetMembersInstance : Codable
{
    public var member:MemberInstance?
    // @References(typeof(MemberInstance))
    public var memberId:Int?

    public var memberType:Int?
    public var membershipNumber:String?
    public var cardNumber:String?
    public var companyName:String?
    public var surname:String?
    public var forenames:String?
    public var title:String?
    public var gender:Int?
    public var dateOfBirth:Date?
    public var address1:String?
    public var address2:String?
    public var city:String?
    public var county:String?
    public var postcode:String?
    public var homePhone:String?
    public var mobilePhone:String?
    public var emailAddress:String?
    public var emailOptOut:Bool?
    public var smsOptOut:Bool?
    public var phoneOptOut:Bool?
    public var letterOptOut:Bool?
    public var directDebitAccountHolder:String?
    public var directDebitAccountNumber:String?
    public var directDebitSortCode:String?
    public var joinedDate:Date?
    public var directDebitBankAddress:String?
    public var fullName:String?
    public var externalReference:String?
    public var photo:[UInt8] = []
    public var photoModifiedDate:Date?
    public var notes:String?
    public var deleted:Bool?
    public var demo:Bool?
    public var useExternalStatus:Bool?
    public var externalStatus:Int?
    public var freeText:String?
    public var memberKey:String?
    public var balance:Double?
    public var creditLimit:Double?
    public var createdDate:Date?
    public var modifiedDate:Date?
    public var deletedDate:Date?
    public var externalSource:Int?
    public var retentionMetric:Double?
    public var monthlyAttendanceFrequency:Double?
    public var assignedToUserId:Int?
    public var createdByUserId:Int?
    public var deletedByUserId:Int?
    public var lossReason:LossReasonInstance?
    // @References(typeof(LossReasonInstance))
    public var lossReasonId:Int?

    public var wonOrLost:Int?
    public var wonOrLostDate:Date?
    public var giftAidPermission:Bool?
    public var photoPermission:Bool?
    public var firstAidPermission:Bool?
    public var emergencyContact:String?
    public var wonOrLostByUser:UserInstance?
    // @References(typeof(UserInstance))
    public var wonOrLostByUserId:Int?

    public var agreedToTerms:Date?
    public var onlineBookingBanned:Bool?
    public var country:String?
    public var fingerprintEnrolled:Date?
    public var lastPaymentAmount:Double?
    public var pin:String?
    public var prospectingPoints:Int?
    public var achievementPoints:Int?
    public var parentForenames:String?
    public var parentSurname:String?
    public var branchKey:String?
    public var contentTypesOptIn:Int?
    public var templateTypesOptIn:Int?
    public var invitedDate:Int?
    public var canSMS:Int?
    public var canEmail:Int?
    public var canTelephone:Int?
    public var canDirectMail:Int?
    public var noConsent:Int?
    public var grade:String?
    public var colourLeft:String?
    public var colourRight:String?
    public var sessionsToComplete:Int?
    public var licenseRenewalDate:Date?
    public var licenseReference:String?
    public var licenseStartDate:Date?
    public var attendance:Int?
    public var lastAttendance:Date?
    public var bookingsAttended:Int?
    public var dateOfLastBooking:Date?
    public var startDate:Date?
    public var expires:Date?
    public var sessionsRemaining:Int?
    public var contractEndDate:Date?
    public var daysRemaining:Int?
    public var membershipType:String?
    public var recurringPayments:Int?
    public var overduePayments:Int?
    public var recurringPaymentsPaidInLast30Days:Int?
    public var attendanceThisWeek:Int?
    public var gradingReadiness:Int?
    public var totalProductSpend:Double?
    public var journalEntry:String?
    public var childBranchId:Int?
    public var childBranch:String?
    public var paymentRecurrenceCount:Int?
    public var membershipState:Int?
    public var hasRecurringPayments:Int?
    public var genderName:String?

    required public init(){}
}

public class UserInstance : Codable
{
    public var userId:Int?
    public var userName:String?
    public var name:String?
    public var email:String?
    public var mobilePhone:String?
    public var enabled:Bool?
    public var lastLogin:Date?
    public var created:Date?
    public var training:Bool?
    public var deleted:Bool?
    public var coursesCompleted:Int?
    public var displayHomeNotification:Bool?
    public var twoFactorEnabled:Bool?
    public var emailConfirmed:Bool?
    public var mobilePhoneConfirmed:Bool?
    public var notifications:Bool?
    public var changePassword:Date?
    public var activated:Date?

    required public init(){}
}