public ActionResult UpdateAccount()
        {
            if (Session["CustomerId"] == null)
            {
                TempData["ReasontoLogin"] = "******";
                return(RedirectToAction("loginview", "login"));
            }
            int custID = Convert.ToInt32(Session["CustomerId"]);
            UpdateDetailsViewModel   viewModel  = new UpdateDetailsViewModel();
            CustomerDetailsViewModel viewModel2 = new CustomerDetailsViewModel();
            var tempCustomer = new HealthInsuranceDB().Customers.Find(custID);

            viewModel2.CustomerDetail    = tempCustomer;
            viewModel2.CityDetail        = new HealthInsuranceDB().Cities.Find(tempCustomer.CityID);
            viewModel2.StateDetail       = new HealthInsuranceDB().States.Find(tempCustomer.StateID);
            viewModel.FullCustomerDetail = viewModel2;
            var cities = new HealthInsuranceDB().Cities;

            viewModel.CityNames = cities.Select(c => new SelectListItem
            {
                Text  = c.CityName,
                Value = c.CityID.ToString()
            });
            var states = new HealthInsuranceDB().States;

            viewModel.StateNames = states.Select(s => new SelectListItem
            {
                Text  = s.StateName,
                Value = s.StateID.ToString()
            });
            ViewBag.date = tempCustomer.DateofBirth;
            return(View(viewModel));
        }
 public ActionResult UpdateAccount(UpdateDetailsViewModel viewModel)
 {
     if (ModelState.IsValid)
     {
         DateTime date         = viewModel.FullCustomerDetail.CustomerDetail.DateofBirth;
         var      db           = new HealthInsuranceDB();
         Customer tempCustomer = new Customer();
         tempCustomer            = db.Customers.Find(viewModel.FullCustomerDetail.CustomerDetail.CustomerID);
         tempCustomer.CustomerID = viewModel.FullCustomerDetail.CustomerDetail.CustomerID;
         tempCustomer.Address    = viewModel.FullCustomerDetail.CustomerDetail.Address;
         if (viewModel.FullCustomerDetail.CustomerDetail.Gender)
         {
             tempCustomer.Gender = true;
         }
         else
         {
             tempCustomer.Gender = false;
         }
         tempCustomer.DateofBirth     = date;
         tempCustomer.Phone           = viewModel.FullCustomerDetail.CustomerDetail.Phone;
         tempCustomer.DoctorID        = viewModel.FullCustomerDetail.CustomerDetail.DoctorID;
         tempCustomer.Email           = viewModel.FullCustomerDetail.CustomerDetail.Email;
         tempCustomer.Firstname       = viewModel.FullCustomerDetail.CustomerDetail.Firstname;
         tempCustomer.Lastname        = viewModel.FullCustomerDetail.CustomerDetail.Lastname;
         tempCustomer.SSN             = viewModel.FullCustomerDetail.CustomerDetail.SSN;
         tempCustomer.Zip             = viewModel.FullCustomerDetail.CustomerDetail.Zip;
         tempCustomer.UserID          = viewModel.FullCustomerDetail.CustomerDetail.UserID;
         tempCustomer.CityID          = viewModel.CitySelectedID;
         tempCustomer.StateID         = viewModel.StateSelectedID;
         db.Entry(tempCustomer).State = System.Data.Entity.EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("index"));
     }
     return(View(viewModel));
 }
Exemple #3
0
 private bool ChangedEmailAddress(UpdateDetailsViewModel model)
 {
     if (model.Email != User.Identity.GetUserName())
     {
         return(true);
     }
     return(false);
 }
Exemple #4
0
 private bool ChangedPassword(UpdateDetailsViewModel model)
 {
     if (model.NewPassword != null)
     {
         return(true);
     }
     return(false);
 }
        public async Task <IActionResult> UpdateDetails()
        {
            var user = await _userService.FetchCurrentUser();

            var model = new UpdateDetailsViewModel();

            model.Kund = _userService.FetchCurrentCustomer(user.Id);

            return(View(model));
        }
        public async Task <IActionResult> UpdateDetails(UpdateDetailsViewModel model)
        {
            var user = await _userService.FetchCurrentUser();

            if (ModelState.IsValid)
            {
                _userService.UpdateUserDetails(user, model.Kund);
                ViewBag.UpdateMessage = "Ditt konto har uppdaterats.";
                return(View(model));
            }

            return(View());
        }
Exemple #7
0
        //
        // GET: /Manage/Index
        public ActionResult Index()
        {
            /*
             * ViewBag.StatusMessage =
             *  message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
             *  : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
             *  : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
             *  : message == ManageMessageId.Error ? "An error has occurred."
             *  : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
             *  : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
             *  : "";
             *
             * var userId = User.Identity.GetUserId();
             * var model = new IndexViewModel
             * {
             *  HasPassword = HasPassword(),
             *  PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
             *  TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
             *  Logins = await UserManager.GetLoginsAsync(userId),
             *  BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
             * };
             */
            var userId      = User.Identity.GetUserId();
            var currentUser = UserManager.FindById(userId);
            var model       = new UpdateDetailsViewModel
            {
                PhoneNumber     = currentUser.PhoneNumber,
                FirstName       = currentUser.FirstName,
                Surname         = currentUser.Surname,
                Email           = currentUser.Email,
                BootstrapTheme  = currentUser.BootstrapTheme,
                NewPassword     = currentUser.PasswordHash,
                ConfirmPassword = currentUser.PasswordHash,
                OldPassword     = currentUser.PasswordHash
            };

            ViewBag.Name = User.Identity.Name;

            return(View(model));
        }
 public UpdateDetailsPage(string updateId)
 {
     InitializeComponent();
     BindingContext = new UpdateDetailsViewModel(updateId);
 }
Exemple #9
0
        public async Task <ActionResult> Index(UpdateDetailsViewModel model)
        {
            //Set these flags so we know what was changed
            var emailVerified   = true;
            var passwordChanged = false;

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

            /*
             * Now we need to make the changes saved on the form and take appropriate action[s] if email address or passwords were updated
             * as we need to log the user out in these circumstances but we need to save any theme, name changes or tele number changes
             * before we update any email address or passwords.
             *
             */
            if (model.OldPassword == null && model.NewPassword != null)
            {
                ModelState.AddModelError("OldPassword", "Please enter your old password first when making changes to it!");
                return(View(model));
            }

            //Now we can retrieve the user details from SQL as we have no form errors and we will need to compare everything to decide what we do with the current login session
            var userId      = User.Identity.GetUserId();
            var currentUser = UserManager.FindById(userId);

            if (ChangedPassword(model))
            {
                //We're updating our password so we can attempt to do that now
                //we will perform the required logout after the rest of any changes are applied
                var pwdResult = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);

                if (pwdResult.Succeeded)
                {
                    passwordChanged = true;
                }
                else
                {
                    AddErrors(pwdResult);
                    return(View(model));
                }
            }

            if (ChangedEmailAddress(model))
            {
                //Update the user's email address to the one entered on the form
                var emailResult = await UserManager.SetEmailAsync(User.Identity.GetUserId(), model.Email);

                //Did the change of email address happen?
                if (emailResult.Succeeded)
                {
                    //Email update was successful
                    emailVerified = false;
                    //Generate a new security token
                    string code = await UserManager.GenerateEmailConfirmationTokenAsync(currentUser.Id);

                    //Generate the dynamic link for the email to be sent to the user to confirm the new address
                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = currentUser.Id, code = code }, protocol: Request.Url.Scheme);
                    //Generate a custom email message
                    var mailMessage = $"<html><body>" +
                                      $"<p>Dear {model.FirstName},</p>" +
                                      $"<p>Thank you for updating your account with us today, we just need you to confirm your new email address now.</p>" +
                                      $"<p>Please confirm your account by clicking <a href=\"{callbackUrl}\">here</a></p>" +
                                      $"<p>Thank you,</p>" +
                                      $"<p>Easy Hire Admin</p>" +
                                      $"</body></html>";
                    //Send email verification to the user
                    await UserManager.SendEmailAsync(currentUser.Id, "Confirm your email", mailMessage);
                }
                else
                //Email update was not successful so show the error message[s] and return the completed form to the user
                {
                    AddErrors(emailResult);
                    return(View(model));
                }
            }

            //Update our user details to reflect any changes made to other areas on the form
            currentUser.BootstrapTheme = model.BootstrapTheme;
            currentUser.FirstName      = model.FirstName;
            currentUser.Surname        = model.Surname;
            currentUser.PhoneNumber    = model.PhoneNumber;
            currentUser.UserName       = model.Email;
            //Perform general account update
            var result = await UserManager.UpdateAsync(currentUser);

            //Was the update successful?
            if (result.Succeeded)
            {
                //General update was successful
                if (!emailVerified || passwordChanged)
                //Email or password was changed
                {
                    //Sign user out
                    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
                    //Delete our custom cookie
                    Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(-1);
                    //Email was changed
                    if (!emailVerified)
                    {
                        //Send the user to the email verification page
                        ViewBag.AttemptSignIn = false;
                        return(Redirect("~/Account/ConfirmRegistration"));
                    }
                    else
                    //Password was changed
                    {
                        //Send the user to the login page now
                        return(Redirect("~/Account/Login"));
                    }
                }
                else
                //Email or password was not changed
                {
                    //Uodate our login cookie to be able to use the custom fields from AspNetUser table
                    var cookies = new CookieManager();
                    //cookies.context = System.Web.HttpContext.Current;
                    cookies.WriteCookie(currentUser);
                    //Redirect to confirm update view as the cookie for the theme (if it was changed) will only apply on next http request
                    return(Redirect("~/Account/ConfirmUpdate"));
                }
            }
            //General update was not successful so show the error message[s] and return the completed form to the user.
            AddErrors(result);
            return(View(model));
        }