public ActionResult EditMembershipUser(MembershipUserViewModel viewModel) { using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) { var loggedOnUserId = LoggedOnReadOnlyUser?.Id ?? Guid.Empty; //Admin Id var admin = MembershipService.Get(loggedOnUserId); //Admin doing update var user = MembershipService.Get(viewModel.MembershipUserId); //User to update var membershipUserList = MembershipService.GetAll(); //Dashboard #'s var memberRole = MembershipService.GetRolesForUser(user.Email); //User's role StatesViewModel statesViewModel = new StatesViewModel() //Load static State dropdown { allStates = SettingsService.ListOfStates().ToList() }; viewModel._statesViewModel = statesViewModel; var listViewModel = new MembershipUserListViewModel //Dashboard #'s { NonPagedMembershipUsers = membershipUserList.ToList() }; viewModel._listViewModel = listViewModel; viewModel.Role = memberRole[0]; if (viewModel.EditDisplayName.Count() < 3) //Display Name must have 3 Characters { TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "Username must have atleast 3 characters.", MessageType = GenericMessages.danger }; return(View(viewModel)); } // Sort image out first if (viewModel.Files != null) { // Before we save anything, check the user already has an upload folder and if not create one var uploadFolderPath = HostingEnvironment.MapPath(string.Concat(SiteConstants.Instance.UploadFolderPath, user.Id)); if (!Directory.Exists(uploadFolderPath)) { Directory.CreateDirectory(uploadFolderPath); } // Loop through each file and get the file info and save to the users folder and Db var file = viewModel.Files[0]; if (file != null) { // If successful then upload the file var uploadResult = AppHelpers.UploadFile(file, uploadFolderPath, true); if (!uploadResult.UploadSuccessful) { TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = uploadResult.ErrorMessage, MessageType = GenericMessages.danger }; return(View(viewModel)); } // Save avatar to user user.Avatar = uploadResult.UploadedFileName; } } // Set the users Avatar for the confirmation page viewModel.Avatar = user.Avatar; user.FirstName = viewModel.EditFirstName; user.LastName = viewModel.EditLastName; user.City = viewModel.EditCity; user.State = viewModel.EditState; if (viewModel.EditDisplayName != user.DisplayName) { if (MembershipService.GetUserByDisplayName(viewModel.EditDisplayName) != null) { unitOfWork.Rollback(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "This display name is already taken. Please choose another display name.", MessageType = GenericMessages.danger }; return(View(viewModel)); } user.DisplayName = viewModel.EditDisplayName; } if (viewModel.EditEmail != user.Email) { if (MembershipService.GetUserByEmail(viewModel.EditEmail) != null) { unitOfWork.Rollback(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "This email is already taken. Please choose another email.", MessageType = GenericMessages.danger }; return(View(viewModel)); } user.Email = viewModel.EditEmail; } try { MembershipService.AdminProfileUpdated(user, admin); unitOfWork.Commit(); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = "Profile updated", MessageType = GenericMessages.success }; } catch (Exception ex) { unitOfWork.Rollback(); //LoggingService.Error(ex); TempData[AppConstants.MessageViewBagName] = new AdminGenericMessageViewModel { Message = ex.ToString(), MessageType = GenericMessages.danger }; } return(View(viewModel)); } }