public async Task <SignupResponseDto> Signup([FromBody] SignupRequestDto model) { var errors = await _userService.ValidateUserData(new UserDataValidateModel { UserId = null, Username = model.Username, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName }) as List <String>; if (model.Password != model.PasswordConfirm) { errors.Add("The passwords are don't match"); } if (!Regex.IsMatch(model.Password, "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!?,._-]).{6,30})")) { errors.Add("Invalid password format."); } if (errors.Count == 0) { var isCreated = await _userService.CreateNew(model); if (isCreated) { Response.StatusCode = StatusCodes.Status201Created; } else { Response.StatusCode = StatusCodes.Status400BadRequest; errors.Add("Unknown error. Try later."); } return(new SignupResponseDto { Status = isCreated, Messages = errors }); } Response.StatusCode = StatusCodes.Status400BadRequest; return(new SignupResponseDto { Status = false, Messages = errors }); }
public async Task <Boolean> CreateNew(SignupRequestDto model) { using (var uow = _tellerDatabaseUnitOfWorkFactory.CreateBasicUnitOfWork()) { var user = new User { Username = model.Username.Trim().ToLower(), Password = EncryptPassword(model.Password), Email = model.Email.Trim().ToLower(), IsActivate = true, IsBlocked = false, Role = UserRole.User, FirstName = model.FirstName.Trim(), LastName = model.LastName.Trim() }; var savedUser = await uow.GetRepository <IUserRepository>().SaveOrUpdate(user); uow.Commit(); return(savedUser != null); } }