public async Task <ActionResult <UserAccountDto> > RegisterAgent([FromBody] RegisterAgentDto registerAgentDto, CancellationToken cancellationToken)
        {
            var userDto = await _appAuthService.RegisterAgentAsync
                              (registerAgentDto, cancellationToken);

            return(userDto);
        }
        public async Task <UserAccountDto> RegisterAgentAsync(RegisterAgentDto registerAgentDto, CancellationToken cancellationToken)
        {
            registerAgentDto.Email    = registerAgentDto.Email.ToLower().Trim();
            registerAgentDto.Username = registerAgentDto.Username.ToLower().Trim();

            var estate = await CheckIfEstateExistById(registerAgentDto.RealEstateId, cancellationToken);

            await CheckIfUserIsValid(registerAgentDto.Email, registerAgentDto.Username, cancellationToken);

            var activationKey = _hasher.CalculateHash(registerAgentDto.Firstname
                                                      + registerAgentDto.Lastname
                                                      + registerAgentDto.Email
                                                      + registerAgentDto.Username);
            var passwordHash = _passwordService.HashUserPassword(registerAgentDto.Email, registerAgentDto.Password);
            var user         = CreateUser(registerAgentDto, UserGroup.Agent, registerAgentDto.Password, passwordHash, activationKey);

            _entityService.DbContext.Agent.Add(new Agent
            {
                RealEstateId  = estate.Id,
                UserAccountId = user.Id,
                MetadataJson  = "{}"
            });
            _entityService.DbContext.SaveChanges();
            return(await AuthenticateAsync(registerAgentDto.Email, registerAgentDto.Password, cancellationToken));
        }