public IActionResult SignupUser([FromBody] SignupRequestDTO body) { if (!body.Validate()) { return(BadRequest(SignupResponseDTO.BadRequest())); } // Convert DTO --> raw signup data var raw = new SignupRaw { Email = body.email, Name = body.name, Password = body.password, }; // SignupUser var data = _service.SignupUser(raw); if (!data.Success) { if (data.Error == SignupResponseError.EmailUniqueness) { return(BadRequest(SignupResponseDTO.EmailError())); } return(BadRequest(SignupResponseDTO.BadRequest())); } return(Ok(new SignupResponseDTO(true, data.UserId, data.Tokens))); }
public SignupResponse SignupUser(SignupRaw raw) { // Convert from Raw --> Domain Entity var user = new Domain.User { Email = new Email(raw.Email), Name = new Name(raw.Name), Password = new Password(raw.Password), CreatedAt = DateTime.Now, ProfileImagePath = new ImagePath(), Username = new Username(raw.Username), }; // Check uniqueness of email if (!_userRepository.CheckEmailUniqueness(user.Email)) { return(new SignupResponse(false, SignupResponseError.EmailUniqueness)); } // Check uniqueness of username if (!_userRepository.CheckUsernameUniqueness(user.Username)) { return(new SignupResponse(false, SignupResponseError.UsernameUniqueness)); } // Add user to context and save to DB var model = _userRepository.Add(user); _userRepository.SaveChanges(); // create tokens var access = _createToken(TokenType.Access, model.Id); var refresh = _createToken(TokenType.Refresh, model.Id); return(new SignupResponse(true, model.Id, access, refresh)); }