/// <summary> /// Updates the user. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="visitorContext">The visitor context.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager response where the user is returned. /// </returns> public virtual ManagerResponse<UpdateUserResult, CommerceUser> UpdateUser([NotNull] CommerceStorefront storefront, [NotNull] VisitorContext visitorContext, ProfileModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(visitorContext, "visitorContext"); Assert.ArgumentNotNull(inputModel, "inputModel"); UpdateUserResult result; var userName = visitorContext.UserName; var commerceUser = this.GetUser(userName).Result; if (commerceUser != null) { commerceUser.FirstName = inputModel.FirstName; commerceUser.LastName = inputModel.LastName; commerceUser.Email = inputModel.Email; commerceUser.SetPropertyValue("Phone", inputModel.TelephoneNumber); try { var request = new UpdateUserRequest(commerceUser); result = this.CustomerServiceProvider.UpdateUser(request); } catch (Exception ex) { result = new UpdateUserResult { Success = false }; result.SystemMessages.Add(new Sitecore.Commerce.Services.SystemMessage() { Message = ex.Message + "/" + ex.StackTrace }); } } else { // user is authenticated, but not in the CommerceUsers domain - probably here because we are in edit or preview mode var message = StorefrontManager.GetSystemMessage("UpdateUserProfileError"); message = string.Format(CultureInfo.InvariantCulture, message, Context.User.LocalName); result = new UpdateUserResult { Success = false }; result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = message }); } Helpers.LogSystemMessages(result.SystemMessages, result); return new ManagerResponse<UpdateUserResult, CommerceUser>(result, result.CommerceUser); }
public ActionResult EditProfile() { var model = new ProfileModel(); if (!Context.User.IsAuthenticated) { return Redirect("/login"); } var commerceUser = this.AccountManager.GetUser(this.CurrentVisitorContext.UserName).Result; if (commerceUser == null) { return View(this.GetRenderingView("EditProfile"), model); } model.FirstName = commerceUser.FirstName; model.Email = commerceUser.Email; model.EmailRepeat = commerceUser.Email; model.LastName = commerceUser.LastName; model.TelephoneNumber = commerceUser.GetPropertyValue("Phone") as string; return View(this.GetRenderingView("EditProfile"), model); }
public JsonResult UpdateProfile(ProfileModel model) { try { Assert.ArgumentNotNull(model, "UpdateProfileInputModel"); ProfileBaseJsonResult result = new ProfileBaseJsonResult(); this.ValidateModel(result); if (result.HasErrors) { return Json(result, JsonRequestBehavior.AllowGet); } if (!Context.User.IsAuthenticated || Context.User.Profile.IsAdministrator) { return Json(result); } var response = this.AccountManager.UpdateUser(this.CurrentStorefront, this.CurrentVisitorContext, model); result.SetErrors(response.ServiceProviderResult); if (response.ServiceProviderResult.Success && !string.IsNullOrWhiteSpace(model.Password) && !string.IsNullOrWhiteSpace(model.PasswordRepeat)) { var changePasswordModel = new ChangePasswordInputModel { NewPassword = model.Password, ConfirmPassword = model.PasswordRepeat }; var passwordChangeResponse = this.AccountManager.UpdateUserPassword(this.CurrentStorefront, this.CurrentVisitorContext, changePasswordModel); result.SetErrors(passwordChangeResponse.ServiceProviderResult); if (passwordChangeResponse.ServiceProviderResult.Success) { result.Initialize(response.ServiceProviderResult); } } return Json(result); } catch (Exception e) { CommerceLog.Current.Error("UpdateProfile", this, e); return Json(new BaseJsonResult("UpdateProfile", e), JsonRequestBehavior.AllowGet); } }
public ActionResult AccountHomeProfile() { var model = new ProfileModel(); if (!Context.User.IsAuthenticated) { return Redirect("/login"); } if (Context.User.IsAuthenticated && !Context.User.Profile.IsAdministrator) { var commerceUser = this.AccountManager.GetUser(this.CurrentVisitorContext.UserName).Result; if (commerceUser != null) { model.FirstName = commerceUser.FirstName; model.Email = commerceUser.Email; model.LastName = commerceUser.LastName; model.TelephoneNumber = commerceUser.GetPropertyValue("Phone") as string; } } Item item = Context.Item.Children.SingleOrDefault(p => p.Name == "EditProfile"); if (item != null) { //If there is a specially EditProfile then use it ViewBag.EditProfileLink = LinkManager.GetDynamicUrl(item); } else { //Else go global Edit Profile item = Context.Item.Database.GetItem("/sitecore/content/Home/MyAccount/Profile"); ViewBag.EditProfileLink = LinkManager.GetDynamicUrl(item); } return View(CurrentRenderingView, model); }