コード例 #1
0
        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"));
        }