// GET: User/Edit/5 public ActionResult Edit(string id) { ViewBag.ReturnUrl = Request.UrlReferrer == null ? "/User" : Request.UrlReferrer.AbsoluteUri; ViewBag.Groups = RepositoryProvider.Get <GroupRepository>().Get().ToList(); if (string.IsNullOrEmpty(id)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var user = UserManager.FindById(id); if (user == null) { return(HttpNotFound()); } var editUser = new EditUserMvcViewModel() { UserId = user.Id, UserName = user.UserName, FirstName = user.FirstName, LastName = user.LastName, PhotoPath = user.PhotoPath, }; Enums.UserStatus userStauts; editUser.Status = Enum.TryParse(user.Status, out userStauts) ? userStauts : Enums.UserStatus.Inactive; var identityUserRole = user.Roles.FirstOrDefault(); if (identityUserRole != null) { var role = RoleManager.FindById(identityUserRole.RoleId); Enums.RoleType roleType; editUser.RoleName = Enum.TryParse(role.Name, out roleType) ? roleType : Enums.RoleType.User; } editUser.GroupIds = user.JoinedGroups.Any() ? user.JoinedGroups.Select(p => p.GroupId.ToString()).ToArray() : null; return(View(editUser)); }
public async Task <ActionResult> Edit( [Bind(Include = "UserId,FirstName,LastName,PhotoPath,Photo,Status,UserName,RoleName,GroupIds")] EditUserMvcViewModel model) { if (ModelState.IsValid) { var user = UserManager.FindById(model.UserId); if (model.Photo != null && model.Photo.InputStream.Length > 0) { var azureStorageHelper = new AzureStorageHelper(ConfigHelper.AzureStorageConnectionString); Stream s = model.Photo.InputStream; ImageHelper.Resize(s, s, 300, ImageFormat.Jpeg); var photoUrl = await azureStorageHelper.SaveFileStream(s, Guid.NewGuid() + ".jpg", AzureStorageHelper.FileUsage.UserPhotos); if (!string.IsNullOrEmpty(user.PhotoPath)) { await azureStorageHelper.DeleteFile(user.PhotoPath, AzureStorageHelper.FileUsage.UserPhotos); } user.PhotoPath = photoUrl; } user.FirstName = model.FirstName; user.LastName = model.LastName; user.Status = model.Status.ToString(); user.Roles.Clear(); var role = RoleManager.FindByName(model.RoleName.ToString()); user.Roles.Add(new IdentityUserRole() { UserId = user.Id, RoleId = role.Id }); if (model.GroupIds != null && model.GroupIds.Length > 0) { user.JoinedGroups.Clear(); foreach (var gId in model.GroupIds) { Guid id = Guid.Parse(gId); var group = RepositoryProvider.Get <GroupRepository>() .FirstOrDefault(p => p.GroupId == id); if (group != null) { user.JoinedGroups.Add(group); } } } IdentityResult result = await UserManager.UpdateAsync(user); if (!result.Succeeded) { AddErrors(result); ViewBag.ReturnUrl = string.IsNullOrEmpty(Request.QueryString["returnUrl"]) ? "/User" : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]); } else { return (Redirect(string.IsNullOrEmpty(Request.QueryString["returnUrl"]) ? "/User" : HttpUtility.UrlDecode(Request.QueryString["returnUrl"]))); } } ViewBag.ReturnUrl = Request.QueryString["returnUrl"]; ViewBag.Groups = RepositoryProvider.Get <GroupRepository>().Get().ToList(); return(View(model)); }