using System.Data.Common; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace DXPDAL.VendorPo; public class PoAcknowledgementDAL : IPoAcknowledgementDAL { private readonly IQueryExecutor _QueryExecutor; public PoAcknowledgementDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetByTenantMMHeadAsync(int tenantId, int mmHeadId, LoginDTO login, CancellationToken ct) { return await _QueryExecutor.QuerySingleAsync( login, PoAcknowledgementQB.GET_BY_TENANT_MMHEAD, new { TenantId = tenantId, MMHeadId = mmHeadId }, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetByTenantMMHeadsAsync(int tenantId, IEnumerable mmHeadIds, LoginDTO login, CancellationToken ct) { var ids = mmHeadIds.ToArray(); if (ids.Length == 0) return Enumerable.Empty(); return await _QueryExecutor.QueryAsync( login, PoAcknowledgementQB.GET_BY_TENANT_MMHEADS, new { TenantId = tenantId, MMHeadIds = ids }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); } public async Task SaveAsync(PoAcknowledgementDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PoAcknowledgementQB.INSERT, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task SupersedeAsync(int dxpPoAcknowledgementId, LoginDTO login, DbTransaction tx, CancellationToken ct) { var param = new { DxpPoAcknowledgementId = dxpPoAcknowledgementId, ModifiedById = login.UserId, ModifiedOn = DateTime.UtcNow }; await _QueryExecutor.ExecuteAsync( login, PoAcknowledgementQB.SUPERSEDE, param, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateReservationOutcomeAsync(PoAcknowledgementDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _QueryExecutor.ExecuteAsync( login, PoAcknowledgementQB.UPDATE_RESERVATION_OUTCOME, dto, tx, cancellationToken: ct).ConfigureAwait(false); } }