Esempio n. 1
0
        private void UpdateArray(DBEntities context, SecurityUserModel model, SecurityUser target)
        {
            model.Roles = model.Roles ?? new List<Guid>();
            foreach (SecurityRole item in target.SecurityRole.ToList())
            {
                if (!model.Roles.Contains(item.Id))
                    target.SecurityRole.Remove(item);
            }

            foreach (SecurityRole item in context.SecurityRole.Where(
                s => model.Roles.Contains(s.Id)).ToList())
            {
                if (!target.SecurityRole.Any(any => item.Id == any.Id))
                    target.SecurityRole.Add(item);
            }

            model.Groups = model.Groups ?? new List<Guid>();
            foreach (SecurityGroup item in target.SecurityGroup.ToList())
            {
                if (!model.Groups.Contains(item.Id))
                    target.SecurityGroup.Remove(item);
            }

            foreach (SecurityGroup item in context.SecurityGroup.Where(
                s => model.Groups.Contains(s.Id)).ToList())
            {
                if (!target.SecurityGroup.Any(any => item.Id == any.Id))
                    target.SecurityGroup.Add(item);
            }
        }
Esempio n. 2
0
 private void ValidateGroup(DBEntities context, SecurityUserModel model)
 {
     //string res = SecurityUserValidator.CheckTableName(context, model.Id, model.TableName);
     //if (res.Length > 0)
     //    ModelState.AddModelError("TableName", res);
 }
Esempio n. 3
0
        public ActionResult Edit(Guid id, SecurityUserModel model, string button)
        {
            CheckReadOnly();

            using (DBEntities context = Settings.CreateDataContext())
            {
                ValidateGroup(context, model);

                if (!ModelState.IsValid)
                {
                    return View(model);
                }

                SecurityUser target = null;
                if (model.Id != Guid.Empty)
                {
                    target = SecurityUserHelper.Get(model.Id, context);
                    if (target == null)
                    {
                        ModelState.AddModelError("", Resources.Resource.RowNotFound);
                        return View(model);
                    }
                }
                else
                {
                    target = new SecurityUser();
                    target.Id = Guid.NewGuid();
                    context.AddToSecurityUser(target);
                }

                SecurityUserModel.CreateMap();
                Mapper.Map(model, target);
                UpdateArray(context, model, target);

                try
                {
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    var sb = new StringBuilder(Resources.Resource.SaveError + ": " + ex.Message);
                    if (ex.InnerException != null)
                        sb.AppendLine(ex.InnerException.Message);
                    ModelState.AddModelError("", sb.ToString());
                    return View(model);
                }

                if (button == "SaveAndExit")
                    return RedirectToAction("Index");
                else
                    return RedirectToAction("Edit", new { target.Id });
            }
        }