コード例 #1
0
ファイル: GetPageInfoHandler.cs プロジェクト: lushpush/Weapsy
        private async Task <ModuleModel> CreateModule(WeapsyDbContext context, PageModule pageModule, Dictionary <PermissionType, IEnumerable <string> > roles, Guid languageId)
        {
            var module = context.Modules
                         .Include(x => x.ModuleType).ThenInclude(x => x.App)
                         .FirstOrDefault(x => x.Id == pageModule.ModuleId && x.Status != ModuleStatus.Deleted);

            if (module == null)
            {
                return(null);
            }

            var moduleType = module.ModuleType;

            if (moduleType == null || moduleType.Status == ModuleTypeStatus.Deleted)
            {
                return(null);
            }

            var app = moduleType.App;

            if (app == null || app.Status == AppStatus.Deleted)
            {
                return(null);
            }

            var moduleRoles = new Dictionary <PermissionType, IEnumerable <string> >();

            if (pageModule.InheritPermissions)
            {
                moduleRoles = roles;
            }
            else
            {
                foreach (PermissionType permisisonType in Enum.GetValues(typeof(PermissionType)))
                {
                    var pageRoleIds = pageModule.PageModulePermissions.Where(x => x.Type == permisisonType).Select(x => x.RoleId);
                    var pageRoles   = await _queryDispatcher
                                      .DispatchAsync <GetRoleNamesFromRoleIds, IEnumerable <string> >(new GetRoleNamesFromRoleIds { RoleIds = pageRoleIds });

                    moduleRoles.Add(permisisonType, pageRoles);
                }
            }

            var title = pageModule.Title;

            if (languageId != Guid.Empty)
            {
                var pageModuleLocalisation = pageModule.PageModuleLocalisations.FirstOrDefault(x => x.LanguageId == languageId);

                if (pageModuleLocalisation != null)
                {
                    title = !string.IsNullOrWhiteSpace(pageModuleLocalisation.Title)
                        ? pageModuleLocalisation.Title
                        : title;
                }
            }

            var moduleModel = new ModuleModel
            {
                Id           = pageModule.ModuleId,
                PageModuleId = pageModule.Id,
                Title        = title,
                Zone         = pageModule.Zone,
                SortOrder    = pageModule.SortOrder,
                Roles        = moduleRoles,
                ModuleType   = new ModuleTypeModel
                {
                    ViewType = moduleType.ViewType,
                    ViewName = moduleType.ViewName,
                    EditType = moduleType.EditType,
                    EditUrl  = $"{app.Folder}/{moduleType.EditUrl}"
                },
                Template = new ModuleTemplateModel
                {
                    ViewName = "Default"
                }
            };

            return(moduleModel);
        }
コード例 #2
0
ファイル: GetPageInfoHandler.cs プロジェクト: zdlian/Weapsy
        private ModuleModel CreateModule(WeapsyDbContext context, PageModule pageModule, Dictionary <PermissionType, IEnumerable <string> > roles, Guid languageId)
        {
            var module = context.Modules.FirstOrDefault(x => x.Id == pageModule.ModuleId && x.Status != ModuleStatus.Deleted);

            if (module == null)
            {
                return(null);
            }

            var moduleType = context.ModuleTypes.FirstOrDefault(x => x.Id == module.ModuleTypeId && x.Status != ModuleTypeStatus.Deleted);

            if (moduleType == null)
            {
                return(null);
            }

            var moduleRoles = new Dictionary <PermissionType, IEnumerable <string> >();

            if (pageModule.InheritPermissions)
            {
                moduleRoles = roles;
            }
            else
            {
                foreach (PermissionType permisisonType in Enum.GetValues(typeof(PermissionType)))
                {
                    var pageRoleIds = pageModule.PageModulePermissions.Where(x => x.Type == permisisonType).Select(x => x.RoleId);
                    var pageRoles   = _roleService.GetRolesFromIds(pageRoleIds);
                    moduleRoles.Add(permisisonType, pageRoles.Select(x => x.Name));
                }
            }

            var title = pageModule.Title;

            if (languageId != Guid.Empty)
            {
                var pageModuleLocalisation = pageModule.PageModuleLocalisations.FirstOrDefault(x => x.LanguageId == languageId);

                if (pageModuleLocalisation != null)
                {
                    title = !string.IsNullOrWhiteSpace(pageModuleLocalisation.Title)
                        ? pageModuleLocalisation.Title
                        : title;
                }
            }

            var moduleModel = new ModuleModel
            {
                Id           = pageModule.ModuleId,
                PageModuleId = pageModule.Id,
                Title        = title,
                Zone         = pageModule.Zone,
                SortOrder    = pageModule.SortOrder,
                Roles        = moduleRoles,
                ModuleType   = new ModuleTypeModel
                {
                    ViewType = moduleType.ViewType,
                    ViewName = moduleType.ViewName,
                    EditType = moduleType.EditType,
                    EditUrl  = moduleType.EditUrl
                },
                Template = new ModuleTemplateModel
                {
                    ViewName = "Default"
                }
            };

            return(moduleModel);
        }