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); }
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); }