예제 #1
0
        public void AddModuleAndAction(string[] modules, string role)
        {
            roles r = context.roles.Where(x => x.role_name == role).FirstOrDefault();
            IEnumerable <ModulesInRoles> listModule = r.ModulesInRoles;

            foreach (ModulesInRoles mInRole in listModule)
            {
                if (mInRole.Actions.Count > 0)
                {
                    var actions = mInRole.Actions.ToList();
                    foreach (var a in actions)
                    {
                        mInRole.Actions.Remove(a);
                    }
                }
            }

            context.ModulesInRoles.RemoveRange(listModule);
            context.SaveChanges();

            foreach (string s in modules)
            {
                string[]       temp = s.Split(';');
                ModulesInRoles mr;
                Guid           moduleId = new Guid(temp.First());
                Guid           actionId = new Guid(temp.Last());

                ModulesInRoles            available = context.ModulesInRoles.Where(x => x.RoleId == r.role_id).Where(x => x.ModuleId == moduleId).FirstOrDefault();
                Business.Entities.Actions a         = context.Actions.Find(actionId);

                if (available != null)
                {
                    if (!available.Actions.Contains(a))
                    {
                        available.Actions.Add(a);
                        context.SaveChanges();
                    }
                }
                else
                {
                    mr = new ModulesInRoles()
                    {
                        Id       = Guid.NewGuid(),
                        RoleId   = r.role_id,
                        ModuleId = new Guid(temp.First())
                    };
                    mr.Actions.Add(a);
                    r.ModulesInRoles.Add(mr);
                    context.SaveChanges();
                }
            }
        }
예제 #2
0
        //helper
        public string DrawRowModule(int level, ModuleViewModel m, List <Business.Entities.Actions> actions, roles role)
        {
            string collumn = "col-md-" + 9 / (actions.Count + 1);
            string style   = "margin-left:" + 15 * level + "px";
            string row     = @"<div class='row' style='border-bottom:1px solid #000'>
                            <div class='col-md-3'><div style='" + style + "'>" + m.ModuleName + @"</div></div>";

            foreach (Business.Entities.Actions a in actions)
            {
                bool found = false;

                if (m.Actions.Count > 0)
                {
                    ModulesInRoles mr = repoModulesInRole.FindByRoleAndModule(role.role_id, m.Id);
                    found = false;
                    if (mr != null)//check action
                    {
                        var enumerator = mr.Actions.GetEnumerator();
                        while (enumerator.MoveNext() && !found)
                        {
                            if (enumerator.Current.Id == a.Id)
                            {
                                found = true;
                            }
                        }
                    }
                    if (found)
                    {
                        row += "<div class='" + collumn + @"'><input type='checkbox' checked='checked' value='" + m.Id + ";" + a.Id + "' /></div>";
                    }
                    else
                    {
                        row += "<div class='" + collumn + @"'><input type='checkbox' value='" + m.Id + ";" + a.Id + "' /></div>";
                    }
                }
                else
                {
                    row += "<div class='" + collumn + @"'>-</div>";
                }
            }

            row += " </div>";

            return(row);
        }