public ActionResult Edit(UserEdit model) { var user = DB.Account.Single(x => x.Id == model.Id); if (!ModelState.IsValid) { SetChangeModel(user, model); ViewBag.IsControlPanelUser = user.TypeUser == (sbyte)TypeUsers.ControlPanelUser; return(View(model)); } var activated = false; if (Request.Form["activate"] != null) { if (user.EnabledEnum == UserStatus.Request) { activated = true; } user.EnabledEnum = UserStatus.New; } else if (Request.Form["block"] != null) { user.EnabledEnum = UserStatus.Blocked; } var groups = DB.AccountGroup.Where(x => model.AccountGroupIds.Contains(x.Id)); user.AccountGroup.Clear(); foreach (var group in groups) { user.AccountGroup.Add(group); } user.AccountRegion.Clear(); foreach (var regionCode in model.AccountRegionIds) { user.AccountRegion.Add(new AccountRegion() { AccountId = user.Id, RegionId = regionCode }); } var password = ""; // если подтверждение регистрации пользователя if (activated) { password = GetRandomPassword(); user.Password = Md5HashHelper.GetHash(password); user.PasswordUpdated = DateTime.Now; } user.AppointmentId = model.AppointmentId; user.LastUpdatePermisison = DateTime.Now; DB.SaveChanges(); // отправка сообщения пользователю с паролем if (activated) { Mails.SendAccountVerificationMessage(user, password); } SuccessMessage("Изменения успешно сохранены"); // если админ - на список админов if (user.TypeUser == (sbyte)TypeUsers.ControlPanelUser) { return(RedirectToAction("AdminList")); } return(RedirectToAction("Index")); }