' Options:
'Date: 2025-04-08 12:16:04
'Version: 6.10
'Tip: To override a DTO option, remove "''" prefix before updating
'BaseUrl: https://staging-api.billiecart.com.au
'
'''GlobalNamespace: 
'''MakePartial: True
'''MakeVirtual: True
'''MakeDataContractsExtensible: False
'''AddReturnMarker: True
'''AddDescriptionAsComments: True
'''AddDataContractAttributes: False
'''AddIndexesToDataMembers: False
'''AddGeneratedCodeAttributes: False
'''AddResponseStatus: False
'''AddImplicitVersion: 
'''InitializeCollections: True
'''ExportValueTypes: False
'IncludeTypes: UpdateCustomerRequest.*
'''ExcludeTypes: 
'''AddNamespaces: 
'''AddDefaultXmlNamespace: http://schemas.servicestack.net/types

Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports Infrastructure.Api.Interfaces.ServiceOperations
Imports Application.Interfaces.Resources
Imports Infrastructure.Api.Interfaces.ServiceOperations.Customers

Namespace Global

    Namespace Application.Interfaces.Resources

        Public Partial Class BankAccount
            Public Overridable Property BsbNumber As String
            Public Overridable Property AccountNumber As String
        End Class

        Public Partial Class Customer
            Implements IIdentifiableResource
            Public Overridable Property Id As String
            Public Overridable Property FirstName As String
            Public Overridable Property LastName As String
            Public Overridable Property DateOfBirth As Date
            Public Overridable Property DriversLicenceNo As String
            Public Overridable Property Email As String
            Public Overridable Property Phone As String
            Public Overridable Property PreferredContactMethod As String
            Public Overridable Property AddressLine1 As String
            Public Overridable Property AddressLine2 As String
            Public Overridable Property Suburb As String
            Public Overridable Property StateTerritory As String
            Public Overridable Property Postcode As String
            Public Overridable Property BankAccount As BankAccount
            Public Overridable Property UserAccountId As String
        End Class

        Public Interface IIdentifiableResource
            Property Id As String
        End Interface
    End Namespace

    Namespace Infrastructure.Api.Interfaces.ServiceOperations

        Public Interface ITenantedRequest
            Property OrganisationId As String
        End Interface

        Public Partial Class PutOperationTenanted(Of TResponse)
            Inherits PutOperationUnTenanted(Of TResponse)
            Implements ITenantedRequest
            Public Overridable Property OrganisationId As String
        End Class

        Public Partial Class PutOperationUnTenanted(Of TResponse)
            Implements IPut
        End Class
    End Namespace

    Namespace Infrastructure.Api.Interfaces.ServiceOperations.Customers

        <Route("/customers/{Id}", "PUT")>
        Public Partial Class UpdateCustomerRequest
            Inherits PutOperationTenanted(Of UpdateCustomerResponse)
            Implements IReturn(Of UpdateCustomerResponse)
            Public Overridable Property Id As String
            Public Overridable Property FirstName As String
            Public Overridable Property LastName As String
            Public Overridable Property DateOfBirth As Date
            Public Overridable Property DriversLicenceNo As String
            Public Overridable Property Phone As String
            Public Overridable Property PreferredContactMethod As String
            Public Overridable Property AddressLine1 As String
            Public Overridable Property AddressLine2 As String
            Public Overridable Property Suburb As String
            Public Overridable Property StateTerritory As String
            Public Overridable Property Postcode As String
        End Class

        Public Partial Class UpdateCustomerResponse
            Public Overridable Property ResponseStatus As ResponseStatus
            Public Overridable Property Customer As Customer
        End Class
    End Namespace
End Namespace