using System.Data.Common; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using PIEDAL.DTO.ConfigItem; using PIEDAL.Query.ConfigItem; namespace PIEDAL.CustomCode.ConfigItem; public class PIEConfigItemDAL : IPIEConfigItemDAL { private readonly IQueryExecutor _QueryExecutor; public PIEConfigItemDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } // ── ConfigItem reads ────────────────────────────────────────────────────── public async Task GetPIEConfigItemAsync( Guid configItemId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, PIEConfigItemQB.GET_BY_ID, new { ConfigItemId = configItemId }, cancellationToken: ct).ConfigureAwait(false); // ── ConfigItem writes ───────────────────────────────────────────────────── public async Task> SavePIEConfigItemAsync( PIEConfigItemDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.CreatedBy = login.UserId; dto.CreatedAt = DateTime.UtcNow; dto.UpdatedBy = login.UserId; dto.UpdatedAt = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync( login, PIEConfigItemQB.INSERT, dto, tx, cancellationToken: ct).ConfigureAwait(false); return rows > 0 ? Result.Success("PIE config item saved.") : Result.Failure("Failed to save PIE config item."); } public async Task> UpdatePIEConfigItemAsync( PIEConfigItemDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.UpdatedBy = login.UserId; dto.UpdatedAt = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync( login, PIEConfigItemQB.UPDATE, dto, tx, cancellationToken: ct).ConfigureAwait(false); return rows > 0 ? Result.Success("PIE config item updated.") : Result.Failure("PIE config item not found or not updated."); } public async Task> SoftDeletePIEConfigItemAsync( Guid configItemId, LoginDTO login, DbTransaction tx, CancellationToken ct) { var param = new { ConfigItemId = configItemId, UpdatedAt = DateTime.UtcNow, UpdatedBy = login.UserId }; int rows = await _QueryExecutor.ExecuteAsync( login, PIEConfigItemQB.SOFT_DELETE, param, tx, cancellationToken: ct).ConfigureAwait(false); return rows > 0 ? Result.Success("PIE config item deleted.") : Result.Failure("PIE config item not found or already inactive."); } }