using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using FrameworkDAL.DTO.MetaReport; using GB5Shared.DTO.Framework.Login; namespace FrameworkDAL.CustomCode.MetaReport { public interface IMetaReportDAL { Task GetMetaReport(int metaReportId, LoginDTO loginDTO, CancellationToken ct); Task> GetMetaReportList(LoginDTO loginDTO, CancellationToken ct); Task> GetVariantsByMetaReportId(int metaReportId, LoginDTO loginDTO, CancellationToken ct); Task> GetAspectsByMetaReportId(int metaReportId, LoginDTO loginDTO, CancellationToken ct); Task> GetOptionsByAspectIds(IEnumerable aspectIds, LoginDTO loginDTO, CancellationToken ct); /// Returns raw OptionId/VariantId link rows — the BLL groups them per option. Task> GetApplicableVariantsByOptionIds(IEnumerable optionIds, LoginDTO loginDTO, CancellationToken ct); /// Full transactional save of one MetaReport's entire aggregate — the row itself /// plus a diff-based reconcile of its Variants, Aspects, and each Aspect's Options, plus a /// full replace of every surviving/new option's MMETAREPORTOPTIONVARIANT applicability /// links. Every child collection is resent whole by the caller (BLL), matching this /// codebase's established diff-save convention (SkillProcessStageMapDAL.Save, /// MenuGroupDAL.SaveMenuGroupDetail) — see MetaReportDAL.SaveMetaReportDefinition's own /// remarks for the exact statement ordering and why it's FK-safe. Task SaveMetaReportDefinition(MetaReportDTO dto, bool isNewMetaReport, LoginDTO loginDTO, CancellationToken ct); Task DeleteMetaReport(int metaReportId, LoginDTO loginDTO, CancellationToken ct); } }