/* Options:
Date: 2025-04-10 14:06:23
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://testapi.bokamera.se

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: CurrentUserQuery.*
//ExcludeTypes: 
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

import java.math.*
import java.util.*
import net.servicestack.client.*


@Route(Path="/users", Verbs="GET")
@ApiResponse(Description="Returned if the service was called without an existing session", StatusCode=401)
@ValidateRequest(Validator="IsAuthenticated")
open class CurrentUserQuery : IReturn<CurrentUserQueryResponse>
{
    /**
    * If you want to include the users favorites
    */
    @ApiMember(DataType="boolean", Description="If you want to include the users favorites", ParameterType="query")
    var IncludeFavorites:Boolean? = null

    var IncludeCompanyCustomers:Boolean? = null
    companion object { private val responseType = CurrentUserQueryResponse::class.java }
    override fun getResponseType(): Any? = CurrentUserQuery.responseType
}

open class CurrentUserQueryResponse
{
    /**
    * The user id for your profile.
    */
    @ApiMember(Description="The user id for your profile.")
    var UserId:UUID? = null

    var Favorites:ArrayList<UserFavorites> = ArrayList<UserFavorites>()
    var UserProfile:UserProfileResponse? = null
    var CustomerProfile:UserProfileResponse? = null
    var AdminProfile:AdminProfile? = null
    var CompanyCustomers:ArrayList<CompanyCustomerResponse> = ArrayList<CompanyCustomerResponse>()
}

open class CustomFieldDataResponse
{
    var Id:Int? = null
    var Column:String? = null
    var Name:String? = null
    var Description:String? = null
    var Value:String? = null
    /**
    * Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
    */
    @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    var DataType:String? = null
}

open class UserProfileResponse
{
    var Id:UUID? = null
    var Firstname:String? = null
    var Lastname:String? = null
    var Phone:String? = null
    var Email:String? = null
}

open class AdminProfile
{
    var CompanyId:UUID? = null
    var Id:UUID? = null
    var Firstname:String? = null
    var Lastname:String? = null
    var Email:String? = null
    var WorkerId:String? = null
    var Phone:String? = null
}

open class CompanyCustomerResponse
{
    var CompanyId:UUID? = null
    var CompanyName:String? = null
    var CustomerId:UUID? = null
    var SubscribedToNewsletter:Boolean? = null
    var CustomFieldValues:ArrayList<CustomFieldDataResponse> = ArrayList<CustomFieldDataResponse>()
}

open class UserFavorites
{
    var CompanyId:UUID? = null
    var Company:CompanyQueryResponse? = null
}