Beispiel #1
0
        // 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));
        }
Beispiel #2
0
        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));
        }