private UserProfileModel PrepareUserProfileModel(User user) { if (user == null) throw new ArgumentNullException("user"); AddHomeBreadcrumb(); AddBreadcrumb("Profile for " + user.DisplayName, Url.RouteUrl("UserProfile", new { userName = user.UserName })); var model = new UserProfileModel { FinishedProjects = _projectService.GetFinishedProjectsByUserId(user.Id).Select(x => x.ToModel()).ToList(), IsOwnProfile = (_workContext.CurrentUser != null && user.Id == _workContext.CurrentUser.Id), MetaTitle = string.Format("User profile for {0} | Volunteer on #WeWillGather", user.DisplayName), OrganisedProjects = _projectService.GetOrganisedProjectsByUserId(user.Id).Select(x => x.ToModel()).ToList(), UpcomingProjects = _projectService.GetUpcomingProjectsByUserId(user.Id).Select(x => x.ToModel()).ToList(), User = user.ToModel() }; if (model.IsOwnProfile) { model.User.AvailableDisclosureLevels = _webHelper.GetAllEnumListItems<DisclosureLevel>(); } else { if (_workContext.CurrentUser != null) { if (model.OrganisedProjects.Any(x => x.Volunteers.Any(y => y.Id == _workContext.CurrentUser.Id) || x.Owners.Any(y => y.Id == _workContext.CurrentUser.Id))) model.VisitorIsVolunteer = true; } } return model; }
public ActionResult UpdateProfile(string userName, UserProfileModel model) { var user = _userService.GetUserByUserName(userName); if (user == null || !user.Active) return RedirectToAction("error404", "error"); bool updateUserName = model.User.UserName != user.UserName; user.DisplayName = model.User.DisplayName; user.Email = model.User.Email; user.Telephone = model.User.Telephone; user.UserName = model.User.UserName; user.Website = model.User.Website; if (Enum.IsDefined(typeof(DisclosureLevel), model.User.EmailDisclosureId)) user.EmailDisclosureId = model.User.EmailDisclosureId; if (Enum.IsDefined(typeof(DisclosureLevel), model.User.TelephoneDisclosureId)) user.TelephoneDisclosureId = model.User.TelephoneDisclosureId; if (Enum.IsDefined(typeof(DisclosureLevel), model.User.WebsiteDisclosureId)) user.WebsiteDisclosureId = model.User.WebsiteDisclosureId; model = PrepareUserProfileModel(user); if (ModelState.IsValid) { try { _userService.UpdateUser(user); SuccessNotification("Your profile details have been updated successfully."); if (updateUserName) return RedirectToRoute("UserProfile", new { userName = user.UserName }); } catch (Exception) { ErrorNotification("An error occurred updating your profile details, please try again."); } } else { model.ShowEditProfile = true; } return View(model); }