Пример #1
0
        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());
        }
Пример #2
0
        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 }));
        }