Ejemplo n.º 1
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            Wallet wallet = await walletService.CreateUserWallet(model.UserCurrency);

            DateTime.TryParseExact(model.DateOfBirth,
                                   "dd.MM.yyyy",
                                   CultureInfo.InvariantCulture,
                                   DateTimeStyles.None,
                                   out DateTime birthDate);

            User user = new User
            {
                Cards        = new List <CreditCard>(),
                Transactions = new List <Transaction>(),
                Email        = model.Email,
                UserName     = model.Email,
                CreatedOn    = dateTimeProvider.Now,
                FirstName    = model.FirstName,
                LastName     = model.LastName,
                DateOfBirth  = birthDate,
                Wallet       = wallet,
                WalletId     = wallet.Id,
                Role         = UserRole.None,
            };

            var result = await userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await signInManager.SignInAsync(user, isPersistent : false);

                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
            else
            {
                AddErrors(result);

                ViewData["UserExists"] = "User with that email is already registered!";

                return(View(model));
                //throw new InvalidOperationException("Could not register user!");
            }
        }