public async Task <EmployeeCreateResponse> Handle(EmployeeCreateRequest request, CancellationToken cancellationToken) { var employeesWithSimilarUsernameEmail = await _context.Employees .Where(e => e.Username == request.Username || e.Email == request.Email) .ToListAsync(cancellationToken); // check if username is available / unique if (employeesWithSimilarUsernameEmail.Any(e => e.Username == request.Username)) { throw new ConflictException(nameof(request.Username), "Chosen username isn't available, please take another one."); } // check if email is available / unique if (employeesWithSimilarUsernameEmail.Any(e => e.Email == request.Email)) { throw new ConflictException(nameof(request.Email), "Chosen email isn't available, please take another one."); } string hashedPassword = _hasher.HashPassword(request.Password); Employee newEmployee = new Employee() { Birthday = request.Birthday, Email = request.Email, Firstname = request.Firstname, Lastname = request.Lastname, PhoneNumber = request.PhoneNumber, Username = request.Username, Password = hashedPassword }; await _context.AddAsync(newEmployee, cancellationToken); await _context.SaveChangesAsync(cancellationToken); _logger.LogDebug($"Successfully created user {newEmployee.Username} with the id {newEmployee.Guid}"); return(new EmployeeCreateResponse() { EmployeeId = newEmployee.Guid }); }