using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using FrameworkDAL.DTO.MetaReport; using GB5Shared.DTO.Framework.Login; namespace FrameworkBLL.MetaReport { public interface IMetaReportBLL { /// Full aggregate: the MMETAREPORT row plus Variants and Aspects (each Aspect /// carrying its Options, each Option carrying its ApplicableVariantIds). Null if the id /// doesn't exist. Returned as a typed object (not a pre-serialized JSON string) — /// deliberately NOT following MenuBLL/MenuGroupBLL's JsonConvert.SerializeObject /// convention, which double-encodes into ResponseStandardDTO.Body (Response.CreateSuccess /// Response just assigns Body = data with no re-serialization of its own). This is a new /// module with no legacy consumers, so it uses the single-encoding shape the rest of the /// codebase's endpoints already use. Task GetMetaReport(int metaReportId, LoginDTO loginDTO, CancellationToken ct); Task> GetMetaReportList(LoginDTO loginDTO, CancellationToken ct); /// Saves the entire aggregate in one transaction — assigns AutoNumber ids to /// every new Variant/Aspect/Option before handing off to the DAL's diff-based reconcile. /// Callers resend the full current Variants/Aspects/Options lists every time, matching /// this codebase's established diff-save convention. Task SaveMetaReportDefinition(MetaReportDTO dto, LoginDTO loginDTO, CancellationToken ct); Task DeleteMetaReport(int metaReportId, LoginDTO loginDTO, CancellationToken ct); } }