using System.Data.Common; using GB5Shared.DTO.Framework.Login; using GB5Shared.ResponseStandard; using PIEDAL.DTO.Profile; namespace PIEDAL.CustomCode.Profile; public interface IPIEProfileDAL { // ── Reads ───────────────────────────────────────────────────────────────── Task GetPIEProfileAsync(Guid profileId, LoginDTO login, CancellationToken ct); Task> GetProfileModulesAsync(Guid profileId, LoginDTO login, CancellationToken ct); Task> GetVariantDefaultsAsync(Guid profileId, LoginDTO login, CancellationToken ct); Task> GetProfileKpisAsync(Guid profileId, LoginDTO login, CancellationToken ct); Task> GetDeviationQuestionsAsync(Guid profileId, LoginDTO login, CancellationToken ct); Task> GetDeviationQuestionsByProfileIdsAsync(Guid[] profileIds, LoginDTO login, CancellationToken ct); Task> GetDeviationImplicationsAsync(Guid[] questionIds, LoginDTO login, CancellationToken ct); Task> MatchProfilesAsync(PIEProfileMatchRequestDTO req, LoginDTO login, CancellationToken ct); Task> GetProfileSelectListAsync(LoginDTO login, CancellationToken ct); // ── Writes ──────────────────────────────────────────────────────────────── Task> SavePIEProfileAsync(PIEProfileDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> UpdatePIEProfileAsync(PIEProfileDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> PublishPIEProfileAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> DeprecatePIEProfileAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task IncrementUsageCountAsync(Guid profileId, LoginDTO login, CancellationToken ct); // ── Child insert / replace ──────────────────────────────────────────────── Task DeleteProfileModulesAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertProfileModuleAsync(PIEProfileModuleDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteVariantDefaultsAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertVariantDefaultAsync(PIEProfileVariantDefaultDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteProfileKpisAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertProfileKpiAsync(PIEProfileKpiDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteDeviationQuestionsAsync(Guid profileId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteDeviationImplicationsByQuestionAsync(Guid questionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertDeviationQuestionAsync(PIEDeviationQuestionDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertDeviationImplicationAsync(PIEDeviationImplicationDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); }