protected async override Task <int> DoExecute(RegisterDto request)
        {
            int alreaddyRegisteredUsers = _dbContext.Users.Count(u => u.Email == request.Email);

            if (alreaddyRegisteredUsers >= _businessConfiguration.AllowedAccountsWithSameEmail)
            {
                throw new ValidationFailedException()
                      {
                          ValidationResult = new ValidationResult("Na ten email zarejestrowanych jest już za dużo użytkowników")
                      };
            }

            var user = new User
            {
                Email         = request.Email,
                Name          = request.Name,
                Surname       = request.Surname,
                Pesel         = request.Pesel,
                CandidateId   = null,
                PasswordHash  = _passwordHasher.HashPassword(request.Password),
                EmailVerified = false,
                BirthDate     = request.BirthDate.Value
            };

            EntityEntry <User> result = _dbContext.Users.Add(user);
            await _dbContext.SaveChangesAsync();


            if (!result.IsKeySet)
            {
                throw new Exception("Registration Failed");
            }

            Guid token = await GenerateEmailConfirmationToken(result.Entity.Id);

            _sendEmailCommand.Execute(new EmailDto()
            {
                Body  = EmailContentConfiguration.RegisteredBody(_endpointConfig.ConfirmEmail(token.ToString())),
                Title = EmailContentConfiguration.RegisteredTitle,
                To    = user.Email
            });
            return(result.Entity.Id);
        }