using CMSDAL.DTO.Seo; using CMSDAL.DTO.SitePage; using GB5Shared.DTO.Framework.Login; namespace CMSBLL.SitePage; public interface ISitePageBLL { Task GetSitePage(int sitePageId, LoginDTO loginDTO, CancellationToken ct = default); Task GetRouteAsync(int siteId, string urlPath, LoginDTO loginDTO, CancellationToken ct = default); Task SavePage(SitePageDTO dto, LoginDTO loginDTO, CancellationToken ct = default); Task DeletePage(int sitePageId, LoginDTO loginDTO, CancellationToken ct = default); // Delegate to the existing Content workflow (already routed through ExecuteSaveAsync + // real ContentVersion snapshotting per Phase 0) — a page's publish state IS its Content's // publish state, reused unchanged. Task PublishPage(int sitePageId, LoginDTO loginDTO, CancellationToken ct = default); Task UnpublishPage(int sitePageId, LoginDTO loginDTO, CancellationToken ct = default); // SEO metadata (Site/Page platform Phase 6) — a thin JSON-merge over the existing // Content.ContentMetaDataJson field, scoped under its own "seo" key. SavePageSeoMetadata // routes through the already-fixed ContentBLL.SaveContent (ExecuteSaveAsync + tracing + // event publish) rather than writing Content directly, so it never bypasses that pipeline. Task GetPageSeoMetadata(int contentId, LoginDTO loginDTO, CancellationToken ct = default); Task SavePageSeoMetadata(int contentId, PageSeoMetadataDTO seo, LoginDTO loginDTO, CancellationToken ct = default); }