using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; using Oqtane.Extensions; using Oqtane.Models; namespace Oqtane.Repository { public class PageModuleRepository : IPageModuleRepository { private TenantDBContext _db; private readonly IPermissionRepository _permissions; public PageModuleRepository(TenantDBContext context, IPermissionRepository permissions) { _db = context; _permissions = permissions; } public IEnumerable GetPageModules(int siteId) { IEnumerable pagemodules = _db.PageModule .Include(item => item.Module) // eager load modules .Where(item => item.Module.SiteId == siteId); if (pagemodules.Any()) { IEnumerable permissions = _permissions.GetPermissions(pagemodules.FirstOrDefault().Module.SiteId, "Module").ToList(); foreach (PageModule pagemodule in pagemodules) { pagemodule.Module.Permissions = permissions.Where(item => item.EntityId == pagemodule.ModuleId).EncodePermissions(); } } return pagemodules; } public IEnumerable GetPageModules(int pageId, string pane) { IEnumerable pagemodules = _db.PageModule .Include(item => item.Module) // eager load modules .Where(item => item.PageId == pageId); if (pane != "" && pagemodules.Any()) { pagemodules = pagemodules.Where(item => item.Pane == pane); } if (pagemodules.Any()) { IEnumerable permissions = _permissions.GetPermissions(pagemodules.FirstOrDefault().Module.SiteId, "Module").ToList(); foreach (PageModule pagemodule in pagemodules) { pagemodule.Module.Permissions = permissions.Where(item => item.EntityId == pagemodule.ModuleId).EncodePermissions(); } } return pagemodules; } public PageModule AddPageModule(PageModule pageModule) { _db.PageModule.Add(pageModule); _db.SaveChanges(); return pageModule; } public PageModule UpdatePageModule(PageModule pageModule) { _db.Entry(pageModule).State = EntityState.Modified; _db.SaveChanges(); return pageModule; } public PageModule GetPageModule(int pageModuleId) { PageModule pagemodule = _db.PageModule.Include(item => item.Module) // eager load modules .SingleOrDefault(item => item.PageModuleId == pageModuleId); if (pagemodule != null) { pagemodule.Module.Permissions = _permissions.GetPermissionString("Module", pagemodule.ModuleId); } return pagemodule; } public PageModule GetPageModule(int pageId, int moduleId) { PageModule pagemodule = _db.PageModule.Include(item => item.Module) // eager load modules .SingleOrDefault(item => item.PageId == pageId && item.ModuleId == moduleId); if (pagemodule != null) { pagemodule.Module.Permissions = _permissions.GetPermissionString("Module", pagemodule.ModuleId); } return pagemodule; } public void DeletePageModule(int pageModuleId) { PageModule pageModule = _db.PageModule.Find(pageModuleId); _db.PageModule.Remove(pageModule); _db.SaveChanges(); } } }