public async Task <ActionResult <UserReadDTO> > CreateUser(UserCreateDTO userCreateDTO) { try { var hashedPassword = BCrypt.Net.BCrypt.HashPassword(userCreateDTO.password, 10); userCreateDTO.password = hashedPassword; var userModel = _mapper.Map <User>(userCreateDTO); try { await _repository.CreateUser(userModel); } catch (Exception e) { if ("Email alredy exists!".Equals(e.Message)) { return(BadRequest(new { error = "Email alredy exists!" })); } throw e; } await _repository.SaveChanges(); var userReadDTO = _mapper.Map <UserReadDTO>(userModel); return(CreatedAtRoute(nameof(CreateUser), userReadDTO)); } catch (Exception) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } }