fixed page setting cleanup on delete and centralized module delete logic within PageModuleRepository

This commit is contained in:
sbwalker
2023-06-06 09:11:08 -04:00
parent 818fd2fb43
commit ce56dfc239
3 changed files with 29 additions and 26 deletions

View File

@ -10,14 +10,16 @@ namespace Oqtane.Repository
public class PageRepository : IPageRepository
{
private TenantDBContext _db;
private readonly IPermissionRepository _permissions;
private readonly IPageModuleRepository _pageModules;
private readonly IPermissionRepository _permissions;
private readonly ISettingRepository _settings;
public PageRepository(TenantDBContext context, IPermissionRepository permissions, IPageModuleRepository pageModules)
public PageRepository(TenantDBContext context, IPageModuleRepository pageModules, IPermissionRepository permissions, ISettingRepository settings)
{
_db = context;
_permissions = permissions;
_pageModules = pageModules;
_permissions = permissions;
_settings = settings;
}
public IEnumerable<Page> GetPages(int siteId)
@ -85,11 +87,14 @@ namespace Oqtane.Repository
{
Page page = _db.Page.Find(pageId);
_permissions.DeletePermissions(page.SiteId, EntityNames.Page, pageId);
IEnumerable<PageModule> pageModules = _db.PageModule.Where(item => item.PageId == pageId).ToList();
_settings.DeleteSettings(EntityNames.Page, pageId);
// remove page modules for page
var pageModules = _db.PageModule.Where(item => item.PageId == pageId).ToList();
foreach (var pageModule in pageModules)
{
_pageModules.DeletePageModule(pageModule.PageModuleId);
}
// must occur after page modules are deleted because of cascading delete relationship
_db.Page.Remove(page);
_db.SaveChanges();
}