using System.Data.Common; using EntitlementDAL.DTOs; using EntitlementDAL.Interfaces; using EntitlementDAL.QueryBuilders; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace EntitlementDAL.Implementations; public class ChangeRequestDAL : IChangeRequestDAL { private readonly IQueryExecutor _QueryExecutor; public ChangeRequestDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task GetByIdAsync(int changeRequestId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, ChangeRequestQB.GET_BY_ID, new { ChangeRequestId = changeRequestId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetListPagedAsync( int clientId, int requestStatus, int offset, int pageSize, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryPagedAsync( login, ChangeRequestQB.GET_LIST_PAGED, new { ClientId = clientId, RequestStatus = requestStatus, Offset = offset, PageSize = pageSize }) .ConfigureAwait(false); public async Task SaveAsync(ChangeRequestDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, ChangeRequestQB.INSERT, dto, tx, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateReviewAsync( int changeRequestId, byte requestStatus, int reviewedByUserId, string? reviewComments, LoginDTO login, DbTransaction tx, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, ChangeRequestQB.UPDATE_REVIEW, new { ChangeRequestId = changeRequestId, RequestStatus = requestStatus, ReviewedByUserId = reviewedByUserId, ReviewedOn = DateTime.UtcNow, ReviewComments = reviewComments, ModifiedById = reviewedByUserId, ModifiedOn = DateTime.UtcNow }, tx, cancellationToken: ct).ConfigureAwait(false); }