/* Options:
Date: 2025-04-10 03:15:13
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://api.bokamera.se

//Package: 
//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
IncludeTypes: UpdateUser.*
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*
*/

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

public class dtos
{

    @Route(Path="/users", Verbs="PUT")
    @ApiResponse(Description="Returned if there is a validation error on the input parameters", StatusCode=400)
    // @ApiResponse(Description="Returned if the current user is not allowed to perform the action", StatusCode=401)
    @ValidateRequest(Validator="IsAuthenticated")
    public static class UpdateUser implements IReturn<UpdateUserResponse>
    {
        /**
        * The user id for your profile.
        */
        @ApiMember(Description="The user id for your profile.")
        public UUID UserId = null;

        public String NewEmail = null;
        public UpdateCustomerProfile UserProfile = null;
        public UpdateAdminProfile AdminProfile = null;
        /**
        * The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2 
        */
        @ApiMember(Description="The user realm for identity server.  BookMore = 1, BookMoreAdmin = 2 ", IsRequired=true)
        public KeyCloakRealm Realm = null;
        
        public UUID getUserId() { return UserId; }
        public UpdateUser setUserId(UUID value) { this.UserId = value; return this; }
        public String getNewEmail() { return NewEmail; }
        public UpdateUser setNewEmail(String value) { this.NewEmail = value; return this; }
        public UpdateCustomerProfile getUserProfile() { return UserProfile; }
        public UpdateUser setUserProfile(UpdateCustomerProfile value) { this.UserProfile = value; return this; }
        public UpdateAdminProfile getAdminProfile() { return AdminProfile; }
        public UpdateUser setAdminProfile(UpdateAdminProfile value) { this.AdminProfile = value; return this; }
        public KeyCloakRealm getRealm() { return Realm; }
        public UpdateUser setRealm(KeyCloakRealm value) { this.Realm = value; return this; }
        private static Object responseType = UpdateUserResponse.class;
        public Object getResponseType() { return responseType; }
    }

    public static class UpdateUserResponse
    {
        public Object ResponseStatus = null;
        /**
        * The user id for your profile.
        */
        @ApiMember(Description="The user id for your profile.", IsRequired=true)
        public UUID UserId = null;

        public UserProfileResponse UserProfile = null;
        public AdminProfile AdminProfile = null;
        public Boolean IsSentConfirmationUpdateEmail = null;
        
        public Object getResponseStatus() { return ResponseStatus; }
        public UpdateUserResponse setResponseStatus(Object value) { this.ResponseStatus = value; return this; }
        public UUID getUserId() { return UserId; }
        public UpdateUserResponse setUserId(UUID value) { this.UserId = value; return this; }
        public UserProfileResponse getUserProfile() { return UserProfile; }
        public UpdateUserResponse setUserProfile(UserProfileResponse value) { this.UserProfile = value; return this; }
        public AdminProfile getAdminProfile() { return AdminProfile; }
        public UpdateUserResponse setAdminProfile(AdminProfile value) { this.AdminProfile = value; return this; }
        public Boolean getIsSentConfirmationUpdateEmail() { return IsSentConfirmationUpdateEmail; }
        public UpdateUserResponse setIsSentConfirmationUpdateEmail(Boolean value) { this.IsSentConfirmationUpdateEmail = value; return this; }
    }

    public static enum KeyCloakRealm
    {
        BookMore(1),
        BookMoreAdmin(2),
        SuperAdmin(3);

        private final int value;
        KeyCloakRealm(final int intValue) { value = intValue; }
        public int getValue() { return value; }
    }

    public static class UpdateCustomerProfile
    {
        public String Firstname = null;
        public String Lastname = null;
        public String Phone = null;
        public String Email = null;
        
        public String getFirstname() { return Firstname; }
        public UpdateCustomerProfile setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public UpdateCustomerProfile setLastname(String value) { this.Lastname = value; return this; }
        public String getPhone() { return Phone; }
        public UpdateCustomerProfile setPhone(String value) { this.Phone = value; return this; }
        public String getEmail() { return Email; }
        public UpdateCustomerProfile setEmail(String value) { this.Email = value; return this; }
    }

    public static class UpdateAdminProfile
    {
        public String Firstname = null;
        public String Lastname = null;
        public String Phone = null;
        public String Email = null;
        
        public String getFirstname() { return Firstname; }
        public UpdateAdminProfile setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public UpdateAdminProfile setLastname(String value) { this.Lastname = value; return this; }
        public String getPhone() { return Phone; }
        public UpdateAdminProfile setPhone(String value) { this.Phone = value; return this; }
        public String getEmail() { return Email; }
        public UpdateAdminProfile setEmail(String value) { this.Email = value; return this; }
    }

    public static class UserProfileResponse
    {
        public UUID Id = null;
        public String Firstname = null;
        public String Lastname = null;
        public String Phone = null;
        public String Email = null;
        
        public UUID getId() { return Id; }
        public UserProfileResponse setId(UUID value) { this.Id = value; return this; }
        public String getFirstname() { return Firstname; }
        public UserProfileResponse setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public UserProfileResponse setLastname(String value) { this.Lastname = value; return this; }
        public String getPhone() { return Phone; }
        public UserProfileResponse setPhone(String value) { this.Phone = value; return this; }
        public String getEmail() { return Email; }
        public UserProfileResponse setEmail(String value) { this.Email = value; return this; }
    }

    public static class AdminProfile
    {
        public UUID CompanyId = null;
        public UUID Id = null;
        public String Firstname = null;
        public String Lastname = null;
        public String Email = null;
        public String WorkerId = null;
        public String Phone = null;
        
        public UUID getCompanyId() { return CompanyId; }
        public AdminProfile setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public UUID getId() { return Id; }
        public AdminProfile setId(UUID value) { this.Id = value; return this; }
        public String getFirstname() { return Firstname; }
        public AdminProfile setFirstname(String value) { this.Firstname = value; return this; }
        public String getLastname() { return Lastname; }
        public AdminProfile setLastname(String value) { this.Lastname = value; return this; }
        public String getEmail() { return Email; }
        public AdminProfile setEmail(String value) { this.Email = value; return this; }
        public String getWorkerId() { return WorkerId; }
        public AdminProfile setWorkerId(String value) { this.WorkerId = value; return this; }
        public String getPhone() { return Phone; }
        public AdminProfile setPhone(String value) { this.Phone = value; return this; }
    }

}