示例#1
0
        public ActionResult Create(EditRole role, string[] applicationOptionActivities)
        {
            try
            {
                RoleBase roleBase = new RoleBase();

                if (ModelState.IsValid)
                {
                    roleBase.OrganizationId = this.OrganizationId;
                    roleBase.Name           = role.Name;
                    roleBase.Active         = role.Active;
                    roleBase.RoleApplicationOptionActivities = new List <RoleApplicationOptionActivity>();

                    DataBase.Roles.Insert(roleBase);

                    if (applicationOptionActivities != null)
                    {
                        foreach (var insert in applicationOptionActivities.Where(p => p != "false"))
                        {
                            string[] keyParts = insert.Split('-');

                            RoleApplicationOptionActivity roleApplicationOptionActivity = new RoleApplicationOptionActivity()
                            {
                                ApplicationId = keyParts[0],
                                OptionId      = keyParts[1],
                                ActivityId    = keyParts[2]
                            };
                            roleBase.RoleApplicationOptionActivities.Add(roleApplicationOptionActivity);
                            DataBase.RoleApplicationOptionActivities.Insert(roleApplicationOptionActivity);
                        }
                    }

                    DataBase.Save();

                    return(RedirectToAction("Index"));
                }
            }catch
            {
                this.AddDefaultErrorMessage();
            }

            return(RedirectToAction("Index", "Role", null, true));
        }
示例#2
0
        public ActionResult Edit(EditRole role, string[] applicationOptionActivities)
        {
            try
            {
                RoleBase roleBase = DataBase.Roles.Get(p => p.OrganizationId == this.OrganizationId && p.RoleId == role.RoleId,
                                                       includeProperties: "RoleApplicationOptionActivities").SingleOrDefault();

                if (roleBase.IsPrivate)
                {
                    return(RedirectToAction("Index"));
                }

                if (ModelState.IsValid)
                {
                    roleBase.OrganizationId = this.OrganizationId;
                    roleBase.Name           = role.Name;
                    roleBase.Active         = role.Active;

                    DataBase.Roles.Update(roleBase);

                    if (applicationOptionActivities == null)
                    {
                        applicationOptionActivities = new string[0];
                    }

                    var deleteList = roleBase.RoleApplicationOptionActivities.Where(p =>
                                                                                    p.ApplicationOptionActivity.AllowAssignPermission &&
                                                                                    !applicationOptionActivities.Where(q => q != "false").Contains(p.ApplicationOptionActivity.Key)).ToList();

                    var insertList = applicationOptionActivities.Where(p => p != "false" &&
                                                                       !roleBase.RoleApplicationOptionActivities.Any(q => q.ApplicationOptionActivity.AllowAssignPermission &&
                                                                                                                     q.ApplicationOptionActivity.Key == p)).ToList();

                    foreach (var delete in deleteList)
                    {
                        DataBase.RoleApplicationOptionActivities.Delete(delete);
                    }

                    foreach (var insert in insertList.Where(p => p != "false"))
                    {
                        string[] keyParts = insert.Split('-');

                        RoleApplicationOptionActivity roleApplicationOptionActivity = new RoleApplicationOptionActivity()
                        {
                            ApplicationId = keyParts[0],
                            OptionId      = keyParts[1],
                            ActivityId    = keyParts[2],
                            RoleId        = roleBase.RoleId
                        };
                        roleBase.RoleApplicationOptionActivities.Add(roleApplicationOptionActivity);
                        DataBase.RoleApplicationOptionActivities.Insert(roleApplicationOptionActivity);
                    }

                    DataBase.Save();

                    return(RedirectToAction("Index"));
                }
            }
            catch
            {
                this.AddDefaultErrorMessage();
            }

            return(RedirectToAction("Index", "Role", null, true));
        }