コード例 #1
0
        public override void DoAdd()
        {
            if (Entity.IsInside == true)
            {
                var             domain = DC.Set <FrameworkDomain>().Where(x => x.ID == Entity.DomainId).FirstOrDefault();
                FrameworkAction act    = null;
                if (domain == null)
                {
                    act = DC.Set <FrameworkAction>().Include(x => x.Module.Area).Where(x => x.ID == Entity.ActionId).FirstOrDefault();
                }
                else
                {
                    act = APIHelper.CallAPI <FrameworkAction>(domain.Address + "/WebApi/Pub/GetAction?id=" + Entity.ActionId + "&domainid=" + Entity.DomainId + "&eventts=" + DateTime.Now.Ticks).Result;
                }
                if (act != null)
                {
                    Entity.Url = "/" + act.Module.ClassName + "/" + act.MethodName;
                    if (act.Module.Area != null)
                    {
                        Entity.Url = "/" + act.Module.Area.Prefix + Entity.Url;
                    }
                    Entity.ModuleName = act.Module.ModuleName;
                    Entity.ActionName = act.ActionName;
                }
            }
            else
            {
                Entity.ActionId = null;
                Entity.ModuleId = null;
                if (Entity.Url != null && Entity.Url != "")
                {
                    if (Entity.DomainId == null)
                    {
                        if (Entity.Url.ToLower().StartsWith("http://") == false)
                        {
                            Entity.Url = "http://" + Entity.Url;
                        }
                    }
                    else
                    {
                        if (Entity.Url.StartsWith("/") == false)
                        {
                            Entity.Url = "/" + Entity.Url;
                        }
                    }
                }
            }
            var role = DC.Set <FrameworkRole>().Where(x => x.RoleCode == "001").SingleOrDefault();

            if (role != null && SelectedRolesIDs.Contains(role.ID) == false && SelectedRolesID2.Contains(role.ID) == false)
            {
                Entity.Privileges.Add(new FunctionPrivilege {
                    RoleId = role.ID, Allowed = true
                });
            }
            base.DoAdd();
            AddPrivilege(Entity.ID);
        }
コード例 #2
0
        /// <summary>
        /// 同步Actions
        /// </summary>
        /// <param name="newActions"></param>
        /// <param name="oldActions"></param>
        /// <param name="model"></param>
        /// <param name="DC"></param>
        private static void SycActions(List <FrameworkAction> newActions, List <FrameworkAction> oldActions, FrameworkModule model, IDataContext DC)
        {
            var ToRemove = new List <FrameworkAction>();
            var ToAdd    = new List <FrameworkAction>();

            foreach (var oldItem in oldActions)
            {
                bool exist = false;
                foreach (var newItem in newActions)
                {
                    if (oldItem.MethodName == newItem.MethodName)
                    {
                        exist = true;
                        break;
                    }
                }
                if (exist == false)
                {
                    ToRemove.Add(oldItem);
                }
            }
            foreach (var newItem in newActions)
            {
                bool exist = false;
                foreach (var oldItem in oldActions)
                {
                    if (oldItem.MethodName == newItem.MethodName)
                    {
                        oldItem.ActionName = newItem.ActionName;
                        exist = true;
                        break;
                    }
                }
                if (exist == false)
                {
                    ToAdd.Add(newItem);
                }
            }
            foreach (var remove in ToRemove)
            {
                DC.Set <FrameworkAction>().Remove(remove);
            }
            foreach (var add in ToAdd)
            {
                add.ModuleId = model.ID;
                FrameworkAction act = new FrameworkAction();
                act.ModuleId       = model.ID;
                act.MethodName     = add.MethodName;
                act.Parameter      = add.Parameter;
                act.ParasToRunTest = add.ParasToRunTest;
                act.ActionName     = add.ActionName;
                DC.Set <FrameworkAction>().Add(act);
            }
        }
コード例 #3
0
        private void AddXXX()
        {
            FrameworkAction v = new FrameworkAction();

            using (var context = new FrameworkContext(_seed, DBTypeEnum.Memory))
            {
                v.ActionName = "";
                v.Checked    = true;
                context.Set <FrameworkAction>().Add(v);
                context.SaveChanges();
            }
        }
コード例 #4
0
 public override void DoEdit(bool updateAllFields = false)
 {
     if (Entity.IsInside == true)
     {
         var             domain = DC.Set <FrameworkDomain>().Where(x => x.ID == Entity.DomainId).FirstOrDefault();
         FrameworkAction act    = null;
         if (domain == null)
         {
             act = DC.Set <FrameworkAction>().Include(x => x.Module.Area).Where(x => x.ID == Entity.ActionId).FirstOrDefault();
         }
         else
         {
             act = APIHelper.CallAPI <FrameworkAction>(domain.Address + "/WebApi/Pub/GetAction?id=" + Entity.ActionId + "&domainid=" + Entity.DomainId + "&eventts=" + DateTime.Now.Ticks).Result;
         }
         if (act != null)
         {
             Entity.Url = "/" + act.Module.ClassName + "/" + act.MethodName;
             if (act.Module.Area != null)
             {
                 Entity.Url = "/" + act.Module.Area.Prefix + Entity.Url;
             }
             Entity.ModuleName = act.Module.ModuleName;
             Entity.ActionName = act.ActionName;
         }
     }
     else
     {
         Entity.ActionId = null;
         Entity.ModuleId = null;
         if (Entity.Url != null && Entity.Url != "")
         {
             if (Entity.DomainId == null)
             {
                 if (Entity.Url.ToLower().StartsWith("http://") == false)
                 {
                     Entity.Url = "http://" + Entity.Url;
                 }
             }
             else
             {
                 if (Entity.Url.StartsWith("/") == false)
                 {
                     Entity.Url = "/" + Entity.Url;
                 }
             }
         }
     }
     base.DoEdit(true);
     AddPrivilege(Entity.ID);
 }
コード例 #5
0
        /// <summary>
        /// 获取所有模块
        /// </summary>
        /// <param name="controllers"></param>
        /// <returns></returns>
        private static List <FrameworkModule> GetAllModules(List <Type> controllers)
        {
            var modules = new List <FrameworkModule>();

            foreach (var ctrl in controllers)
            {
                var pubattr1  = ctrl.GetCustomAttributes(typeof(PublicAttribute), false);
                var pubattr12 = ctrl.GetCustomAttributes(typeof(AllowAnonymousAttribute), false);
                var rightattr = ctrl.GetCustomAttributes(typeof(AllRightsAttribute), false);
                var debugattr = ctrl.GetCustomAttributes(typeof(DebugOnlyAttribute), false);
                var areaattr  = ctrl.GetCustomAttributes(typeof(AreaAttribute), false);
                var model     = new FrameworkModule
                {
                    ClassName = ctrl.Name.Replace("Controller", string.Empty)
                };
                if (ctrl.Namespace == "WalkingTec.Mvvm.Mvc")
                {
                    continue;
                }
                if (areaattr.Length == 0 && model.ClassName == "Home")
                {
                    continue;
                }
                if (pubattr1.Length > 0 || pubattr12.Length > 0 || rightattr.Length > 0 || debugattr.Length > 0)
                {
                    model.IgnorePrivillege = true;
                }
                if (typeof(BaseApiController).IsAssignableFrom(ctrl))
                {
                    model.IsApi = true;
                }
                model.NameSpace = ctrl.Namespace;
                //获取controller上标记的ActionDescription属性的值
                var attrs = ctrl.GetCustomAttributes(typeof(ActionDescriptionAttribute), false);
                if (attrs.Length > 0)
                {
                    var ada     = attrs[0] as ActionDescriptionAttribute;
                    var nameKey = ada.GetDescription(ctrl);
                    model.ModuleName = nameKey;
                }
                else
                {
                    model.ModuleName = model.ClassName;
                }
                //获取该controller下所有的方法
                var methods = ctrl.GetMethods(BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Instance);
                //过滤掉/Login/Login方法和特殊方法
                if (model.ClassName.ToLower() == "login")
                {
                    methods = methods.Where(x => x.IsSpecialName == false && x.Name.ToLower() != "login").ToArray();
                }
                else
                {
                    methods = methods.Where(x => x.IsSpecialName == false).ToArray();
                }
                model.Actions = new List <FrameworkAction>();
                //循环所有方法
                foreach (var method in methods)
                {
                    var pubattr2   = method.GetCustomAttributes(typeof(PublicAttribute), false);
                    var pubattr22  = method.GetCustomAttributes(typeof(AllowAnonymousAttribute), false);
                    var arattr2    = method.GetCustomAttributes(typeof(AllRightsAttribute), false);
                    var debugattr2 = method.GetCustomAttributes(typeof(DebugOnlyAttribute), false);
                    var postAttr   = method.GetCustomAttributes(typeof(HttpPostAttribute), false);
                    //如果不是post的方法,则添加到controller的action列表里
                    if (postAttr.Length == 0)
                    {
                        var action = new FrameworkAction
                        {
                            Module     = model,
                            MethodName = method.Name
                        };
                        if (pubattr2.Length > 0 || pubattr22.Length > 0 || arattr2.Length > 0 || debugattr2.Length > 0)
                        {
                            action.IgnorePrivillege = true;
                        }

                        var attrs2 = method.GetCustomAttributes(typeof(ActionDescriptionAttribute), false);
                        if (attrs2.Length > 0)
                        {
                            var ada     = attrs2[0] as ActionDescriptionAttribute;
                            var nameKey = ada.GetDescription(ctrl);
                            action.ActionName = nameKey;
                        }
                        else
                        {
                            action.ActionName = action.MethodName;
                        }
                        var pars = method.GetParameters();
                        if (pars != null && pars.Length > 0)
                        {
                            action.ParasToRunTest = new List <string>();
                            foreach (var par in pars)
                            {
                                action.ParasToRunTest.Add(par.Name);
                            }
                        }
                        model.Actions.Add(action);
                    }
                }
                //再次循环所有方法
                foreach (var method in methods)
                {
                    var pubattr2   = method.GetCustomAttributes(typeof(PublicAttribute), false);
                    var pubattr22  = method.GetCustomAttributes(typeof(AllowAnonymousAttribute), false);
                    var arattr2    = method.GetCustomAttributes(typeof(AllRightsAttribute), false);
                    var debugattr2 = method.GetCustomAttributes(typeof(DebugOnlyAttribute), false);

                    var postAttr = method.GetCustomAttributes(typeof(HttpPostAttribute), false);
                    //找到post的方法且没有同名的非post的方法,添加到controller的action列表里
                    if (postAttr.Length > 0 && model.Actions.Where(x => x.MethodName.ToLower() == method.Name.ToLower()).FirstOrDefault() == null)
                    {
                        if (method.Name.ToLower().StartsWith("dobatch"))
                        {
                            if (model.Actions.Where(x => "do" + x.MethodName.ToLower() == method.Name.ToLower()).FirstOrDefault() != null)
                            {
                                continue;
                            }
                        }
                        var action = new FrameworkAction
                        {
                            Module     = model,
                            MethodName = method.Name
                        };
                        if (pubattr2.Length > 0 || pubattr22.Length > 0 || arattr2.Length > 0 || debugattr2.Length > 0)
                        {
                            action.IgnorePrivillege = true;
                        }
                        var attrs2 = method.GetCustomAttributes(typeof(ActionDescriptionAttribute), false);
                        if (attrs2.Length > 0)
                        {
                            var    ada     = attrs2[0] as ActionDescriptionAttribute;
                            string nameKey = ada.GetDescription(ctrl);
                            action.ActionName = nameKey;
                        }
                        else
                        {
                            action.ActionName = action.MethodName;
                        }
                        model.Actions.Add(action);
                    }
                }
                if (model.Actions != null && model.Actions.Count() > 0)
                {
                    if (areaattr.Length > 0)
                    {
                        string areaName  = (areaattr[0] as AreaAttribute).RouteValue;
                        var    existArea = modules.Where(x => x.Area?.AreaName == areaName).Select(x => x.Area).FirstOrDefault();
                        if (existArea == null)
                        {
                            model.Area = new FrameworkArea
                            {
                                AreaName = (areaattr[0] as AreaAttribute).RouteValue,
                                Prefix   = (areaattr[0] as AreaAttribute).RouteValue,
                            };
                        }
                        else
                        {
                            model.Area = existArea;
                        }
                    }
                    modules.Add(model);
                }
            }

            return(modules);
        }
コード例 #6
0
        public void DoBatchAdd()
        {
            var role = DC.Set <FrameworkRole>().Where(x => x.RoleCode == "001").SingleOrDefault();

            if (role != null && SelectedRolesIDs.Contains(role.ID) == false && SelectedRolesID2.Contains(role.ID) == false)
            {
                Entity.Privileges.Add(new FunctionPrivilege {
                    RoleId = role.ID, Allowed = true
                });
            }
            if (Entity.ModuleId != null && Entity.ActionId != null)
            {
                var domain = DC.Set <FrameworkDomain>().Where(x => x.ID == Entity.DomainId).FirstOrDefault();
                List <FrameworkAction> otherActions = null;
                FrameworkAction        act          = null;
                if (domain == null)
                {
                    act          = DC.Set <FrameworkAction>().Include(x => x.Module.Area).Where(x => x.ID == Entity.ActionId).FirstOrDefault();
                    otherActions = DC.Set <FrameworkAction>().Include(x => x.Module.Area).Where(x => x.ModuleId == this.Entity.ModuleId && x.ID != Entity.ActionId).ToList();
                }
                else
                {
                    otherActions = APIHelper.CallAPI <List <FrameworkAction> >(domain.Address + "/WebApi/Pub/GetOtherActions?id=" + Entity.ActionId + "&moduleid=" + Entity.ModuleId + "&eventts=" + DateTime.Now.Ticks).Result;
                    act          = APIHelper.CallAPI <FrameworkAction>(domain.Address + "/WebApi/Pub/GetAction?id=" + Entity.ActionId + "&domainid=" + Entity.DomainId + "&eventts=" + DateTime.Now.Ticks).Result;
                }
                if (act != null)
                {
                    Entity.Url = "/" + act.Module.ClassName + "/" + act.MethodName;
                    if (act.Module.Area != null)
                    {
                        Entity.Url = "/" + act.Module.Area.Prefix + Entity.Url;
                    }
                    Entity.ModuleName = act.Module.ModuleName;
                    Entity.ActionName = act.ActionName;
                }
                int order = 1;
                foreach (var action in otherActions)
                {
                    FrameworkMenu menu = new FrameworkMenu();
                    menu.ActionId     = action.ID;
                    menu.ModuleId     = action.ModuleId;
                    menu.FolderOnly   = false;
                    menu.IsPublic     = false;
                    menu.Parent       = Entity;
                    menu.ShowOnMenu   = false;
                    menu.DisplayOrder = order++;
                    menu.Privileges   = new List <FunctionPrivilege>();
                    menu.CreateBy     = LoginUserInfo.ITCode;
                    menu.CreateTime   = DateTime.Now;
                    menu.IsInside     = true;
                    menu.DomainId     = Entity.DomainId;
                    if (role != null)
                    {
                        menu.Privileges.Add(new FunctionPrivilege {
                            RoleId = role.ID, Allowed = true
                        });
                    }
                    menu.PageName   = action.ActionName;
                    menu.ModuleName = action.Module.ModuleName;
                    menu.ActionName = action.ActionName;
                    menu.Url        = "/" + action.Module.ClassName + "/" + action.MethodName;
                    if (action.Module.Area != null)
                    {
                        menu.Url = "/" + action.Module.Area.Prefix + menu.Url;
                    }

                    Entity.Children.Add(menu);
                }
            }
            base.DoAdd();
            AddPrivilege(Entity.ID);
        }
コード例 #7
0
ファイル: FrameworkMenuVM.cs プロジェクト: yitongjianghu/WTM
        public override void DoAdd()
        {
            Entity.ICon = $"{IconFont} {IconFontItem}";
            if (Entity.IsInside == false)
            {
                if (Entity.Url != null && Entity.Url != "" && Entity.Url.StartsWith("/") == false)
                {
                    if (Entity.Url.ToLower().StartsWith("http://") == false && Entity.Url.ToLower().StartsWith("https://") == false)
                    {
                        Entity.Url = "http://" + Entity.Url;
                    }
                }
            }
            else
            {
                if (string.IsNullOrEmpty(SelectedModule) == true && Entity.FolderOnly == false)
                {
                    MSD.AddModelError("SelectedModule", Program._localizer["SelectModule"]);
                    return;
                }
                if (string.IsNullOrEmpty(SelectedModule) == false && Entity.FolderOnly == false)
                {
                    var modules = GlobalServices.GetRequiredService <GlobalData>().AllModule;
                    List <FrameworkAction> otherActions = null;
                    var mainAction = modules.Where(x => x.FullName == this.SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName == "Index").SingleOrDefault();
                    if (mainAction == null && Entity.ShowOnMenu == true)
                    {
                        MSD.AddModelError("Entity.ModuleId", Program._localizer["NoIndexInModule"]);
                        return;
                    }
                    if (mainAction == null && Entity.ShowOnMenu == false)
                    {
                        var model = modules.Where(x => x.FullName == this.SelectedModule).FirstOrDefault();
                        mainAction            = new FrameworkAction();
                        mainAction.Module     = model;
                        mainAction.MethodName = null;
                    }
                    Entity.Url        = mainAction.Url;
                    Entity.ModuleName = mainAction.Module.ModuleName;
                    Entity.ActionName = mainAction.ActionDes?.Description ?? mainAction.ActionName;
                    Entity.ClassName  = mainAction.Module.FullName;
                    Entity.MethodName = null;
                    Entity.Children   = new List <FrameworkMenu>();

                    otherActions = modules.Where(x => x.FullName == this.SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName != "Index").ToList();
                    int order = 1;
                    foreach (var action in otherActions)
                    {
                        if (SelectedActionIDs?.Contains(action.Url) == true)
                        {
                            FrameworkMenu menu = new FrameworkMenu();
                            menu.FolderOnly   = false;
                            menu.IsPublic     = false;
                            menu.Parent       = Entity;
                            menu.ShowOnMenu   = false;
                            menu.DisplayOrder = order++;
                            menu.Privileges   = new List <FunctionPrivilege>();
                            menu.CreateBy     = LoginUserInfo.ITCode;
                            menu.CreateTime   = DateTime.Now;
                            menu.IsInside     = true;
                            menu.DomainId     = Entity.DomainId;
                            menu.PageName     = action.ActionDes?.Description ?? action.ActionName;
                            menu.ModuleName   = action.Module.ModuleName;
                            menu.ActionName   = action.ActionDes?.Description ?? action.ActionName;
                            menu.ClassName    = action.Module.FullName;
                            menu.MethodName   = action.MethodName;
                            menu.Url          = action.Url;
                            Entity.Children.Add(menu);
                        }
                    }
                }

                else
                {
                    Entity.Children = null;
                    Entity.Url      = null;
                }
            }
            base.DoAdd();
            List <Guid> guids = new List <Guid>();

            guids.Add(Entity.ID);
            if (Entity.Children != null)
            {
                guids.AddRange(Entity.Children?.Select(x => x.ID).ToList());
            }
            AddPrivilege(guids);
        }
コード例 #8
0
        public override void DoEdit(bool updateAllFields = false)
        {
            if (Entity.IsInside == false)
            {
                if (Entity.Url != null && Entity.Url != "")
                {
                    if (Entity.DomainId == null)
                    {
                        if (Entity.Url.ToLower().StartsWith("http://") == false && Entity.Url.ToLower().StartsWith("https://") == false)
                        {
                            Entity.Url = "http://" + Entity.Url;
                        }
                    }
                    else
                    {
                        if (Entity.Url.StartsWith("/") == false)
                        {
                            Entity.Url = "/" + Entity.Url;
                        }
                    }
                }
            }
            else
            {
                if (string.IsNullOrEmpty(SelectedModule) == true && Entity.FolderOnly == false)
                {
                    MSD.AddModelError("SelectedModule", "请选择一个模块");
                    return;
                }
                if (string.IsNullOrEmpty(SelectedModule) == false && Entity.FolderOnly == false)
                {
                    var modules = GlobalServices.GetRequiredService <GlobalData>().AllModule;
                    List <FrameworkAction> otherActions = null;
                    var mainAction = modules.Where(x => x.FullName == this.SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName == "Index").SingleOrDefault();
                    if (mainAction == null && Entity.ShowOnMenu == true)
                    {
                        MSD.AddModelError("Entity.ModuleId", "模块中没有找到Index页面");
                        return;
                    }
                    if (mainAction == null && Entity.ShowOnMenu == false)
                    {
                        var model = modules.Where(x => x.FullName == this.SelectedModule).FirstOrDefault();
                        mainAction            = new FrameworkAction();
                        mainAction.Module     = model;
                        mainAction.MethodName = "Index";
                    }
                    var ndc    = DC.ReCreate();
                    var oldIDs = ndc.Set <FrameworkMenu>().Where(x => x.ParentId == Entity.ID).Select(x => x.ID).ToList();
                    foreach (var oldid in oldIDs)
                    {
                        try
                        {
                            FrameworkMenu fp = new FrameworkMenu {
                                ID = oldid
                            };
                            ndc.Set <FrameworkMenu>().Attach(fp);
                            ndc.DeleteEntity(fp);
                        }
                        catch { }
                    }
                    ndc.SaveChanges();

                    Entity.Url        = mainAction.Url;
                    Entity.ModuleName = mainAction.Module.ModuleName;
                    Entity.ClassName  = mainAction.Module.ClassName;
                    Entity.MethodName = "Index";

                    otherActions = modules.Where(x => x.FullName == this.SelectedModule).SelectMany(x => x.Actions).Where(x => x.MethodName != "Index").ToList();
                    int order = 1;
                    foreach (var action in otherActions)
                    {
                        if (SelectedActionIDs != null && SelectedActionIDs.Contains(action.Url))
                        {
                            FrameworkMenu menu = new FrameworkMenu();
                            menu.FolderOnly   = false;
                            menu.IsPublic     = false;
                            menu.Parent       = Entity;
                            menu.ShowOnMenu   = false;
                            menu.DisplayOrder = order++;
                            menu.Privileges   = new List <FunctionPrivilege>();
                            menu.CreateBy     = LoginUserInfo.ITCode;
                            menu.CreateTime   = DateTime.Now;
                            menu.IsInside     = true;
                            menu.DomainId     = Entity.DomainId;
                            menu.PageName     = action.ActionName;
                            menu.ModuleName   = action.Module.ModuleName;
                            menu.ActionName   = action.ActionName;
                            menu.Url          = action.Url;
                            Entity.Children.Add(menu);
                        }
                    }
                }

                else
                {
                    Entity.Children = null;
                    Entity.Url      = null;
                }
            }
            base.DoEdit();
            List <Guid> guids = new List <Guid>();

            guids.Add(Entity.ID);
            if (Entity.Children != null)
            {
                guids.AddRange(Entity.Children?.Select(x => x.ID).ToList());
            }
            AddPrivilege(guids);
        }
コード例 #9
0
ファイル: Configuration.cs プロジェクト: accphy/TENXB
        private FrameworkMenu GetMenuFromAction(FrameworkAction act, bool isMainLink, List <FrameworkRole> allowedRoles, List <FrameworkUser> allowedUsers, int displayOrder = 1)
        {
            if (act == null)
            {
                return(null);
            }
            FrameworkMenu menu = new FrameworkMenu
            {
                ActionID     = act.ID,
                ModuleID     = act.ModuleID,
                Url          = "/" + act.Module.ClassName + "/" + act.MethodName,
                Privileges   = new List <FunctionPrivilege>(),
                ShowOnMenu   = isMainLink,
                FolderOnly   = false,
                MLContents   = new List <FrameworkMenuMLContent>(),
                Children     = new List <FrameworkMenu>(),
                IsInherit    = true,
                IsPublic     = false,
                IsInside     = true,
                DisplayOrder = displayOrder,
                CreateTime   = DateTime.Now
            };

            if (act.Module.Area != null)
            {
                menu.Url = "/" + act.Module.Area.Prefix + menu.Url;
            }
            if (isMainLink)
            {
                foreach (var ml in act.Module.MLContents)
                {
                    menu.MLContents.Add(new FrameworkMenuMLContent {
                        LanguageCode = ml.LanguageCode, PageName = ml.ModuleName, ModuleName = ml.ModuleName, ActionName = act.MLContents.Where(x => x.LanguageCode == ml.LanguageCode).Select(x => x.ActionName).FirstOrDefault()
                    });
                }
            }
            else
            {
                foreach (var ml in act.MLContents)
                {
                    menu.MLContents.Add(new FrameworkMenuMLContent {
                        LanguageCode = ml.LanguageCode, PageName = ml.ActionName, ActionName = ml.ActionName, ModuleName = act.Module.MLContents.Where(x => x.LanguageCode == ml.LanguageCode).Select(x => x.ModuleName).FirstOrDefault()
                    });
                }
            }
            if (allowedRoles != null)
            {
                foreach (var role in allowedRoles)
                {
                    menu.Privileges.Add(new FunctionPrivilege {
                        RoleID = role.ID, Allowed = true
                    });
                }
            }
            if (allowedUsers != null)
            {
                foreach (var user in allowedUsers)
                {
                    menu.Privileges.Add(new FunctionPrivilege {
                        UserID = user.ID, Allowed = true
                    });
                }
            }
            return(menu);
        }