public async Task <IActionResult> RegisterAsync(UserRegistrationViewModel registrationViewModel) { var validator = new UserRegistrationViewModelValidator(_accountService); ValidationResult result = validator.Validate(registrationViewModel); if (!result.IsValid) { return(BadRequest(new ErrorResponseFormat(result.Errors.First().ErrorMessage))); } UserRegistrationModel authorizationModel = _mapper.Map <UserRegistrationModel>(registrationViewModel); UserModel user = await _accountService.CreateUserAsync(authorizationModel); if (user == null) { return(BadRequest(new ErrorResponseFormat(Constants.Errors.USER_CREATION_FAILED))); } string tokenString = _jwtService.GetJWTToken(user, new EmailClaimsService(_jwtSettings)); await _accountService.AddAccountTokenAsync( new AccountTokenModel() { ExpirationDate = DateTime.Now.AddMinutes(10), UserId = user.Id } ); await _emailService.SendEmailConfirmationLinkAsync(user.Email, tokenString); return(NoContent()); }
public async Task <IActionResult> RegisterUser([FromBody] UserRegistrationViewModel userDetails) { //dynamic UserDetailsJson = JsonConvert.DeserializeObject(UserDetails.ToString()); UserRegistrationViewModelValidator validator = new UserRegistrationViewModelValidator(); FluentValidation.Results.ValidationResult results = validator.Validate(userDetails); var isvalid = Utils.IsValidAsync((userDetails.EmailAddress).ToString()); isvalid.Wait(); if (!results.IsValid) { foreach (var failure in results.Errors) { Errors.AddErrorToModelState(failure.PropertyName, failure.ErrorMessage, ModelState); } } if (!isvalid.Result) { Errors.AddErrorToModelState("EmailAddress", "Emailadres onjuist", ModelState); } if (_context.Users.Where(x => x.EmailAddress == userDetails.EmailAddress).Select(x => x).ToArray().Length >= 1) { Errors.AddErrorToModelState("EmailAddress", "Emailadres al in gebruik", ModelState); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } int availableId = 1; int availableAddressId = 1; if (_context.Users.Count() != 0) { availableId = _context.Users.Select(a => a.Id).Max() + 1; } if (_context.Addresses.Count() != 0) { availableAddressId = _context.Addresses.Select(a => a.Id).Max() + 1; } User user = new User() { Id = availableId, UserPassword = userDetails.UserPassword, FirstName = userDetails.FirstName, LastName = userDetails.LastName, BirthDate = userDetails.BirthDate, Gender = userDetails.Gender, EmailAddress = userDetails.EmailAddress, PhoneNumber = userDetails.PhoneNumber }; await _context.Users.AddAsync(user); Cart usercart = new Cart() { UserId = user.Id, CartTotalPrice = 0.00 }; _context.Carts.Add(usercart); Wishlist userwishlist = new Wishlist() { UserId = user.Id }; _context.Wishlists.Add(userwishlist); Address addressDetails = new Address() { Id = availableAddressId, Street = userDetails.Street, City = userDetails.City, ZipCode = userDetails.ZipCode, HouseNumber = userDetails.HouseNumber }; _context.Addresses.Add(addressDetails); UserAddress addressUser = new UserAddress() { UserId = user.Id, AddressId = addressDetails.Id }; _context.UserAddress.Add(addressUser); await _context.SaveChangesAsync(); string[] registratiewaarde = new string[1]; registratiewaarde[0] = "Registratie Voltooid"; return(new OkObjectResult(new { Registratie = registratiewaarde })); }