using System.Data.Common; using GB5Shared.DTO.Framework.Login; using GB5Shared.ResponseStandard; using PIEDAL.DTO.Estimation; namespace PIEDAL.CustomCode.Estimation; public interface IPIEEstimationDAL { // ── Rule reads ──────────────────────────────────────────────────────────── Task GetPIEEstimationRuleAsync(Guid ruleId, LoginDTO login, CancellationToken ct); Task> GetActiveRulesByModuleIdsAsync(Guid[] moduleIds, short engagementType, short complexityLevel, LoginDTO login, CancellationToken ct); // ── Snapshot reads ──────────────────────────────────────────────────────── Task GetSnapshotByEngagementAsync(string engagementRef, LoginDTO login, CancellationToken ct); // ── Rule writes ─────────────────────────────────────────────────────────── Task> SavePIEEstimationRuleAsync(PIEEstimationRuleDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> UpdatePIEEstimationRuleAsync(PIEEstimationRuleDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> SoftDeletePIEEstimationRuleAsync(Guid ruleId, LoginDTO login, DbTransaction tx, CancellationToken ct); // ── Snapshot writes (insert-only) ───────────────────────────────────────── Task> InsertSnapshotAsync(PIEEstimationSnapshotDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); }