using FrameworkDAL.DTO.EIPConversation; using FrameworkDAL.Query.DirectAction; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.DirectAction { public class DirectActionTokenAdminDAL : IDirectActionTokenAdminDAL { private readonly IQueryExecutor _qe; private readonly ILogger _logger; public DirectActionTokenAdminDAL(IQueryExecutor qe, ILogger logger) { _qe = qe ?? throw new ArgumentNullException(nameof(qe)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task> GetTokenListAsync( string? actionCode, string? status, DateTime? fromDate, DateTime? toDate, LoginDTO login, CancellationToken ct = default) { ct.ThrowIfCancellationRequested(); try { _logger.LogInformation( "DAL | GetTokenList | Tenant={TenantId} | ActionCode={ActionCode} | Status={Status}", login.ClientId, actionCode, status); var result = await _qe.QueryAsync( login, DirectActionTokenAdminQB.GET_TOKEN_LIST, new { TenantId = login.ClientId, ActionCode = actionCode, Status = status, FromDate = fromDate, ToDate = toDate }, cancellationToken: ct).ConfigureAwait(false); return result ?? []; } catch (OperationCanceledException) { _logger.LogWarning("DAL | GetTokenList | Cancelled | Tenant={TenantId}", login.ClientId); throw; } catch (Exception ex) { _logger.LogError(ex, "DAL | GetTokenList | Error | Tenant={TenantId}", login.ClientId); throw; } } } }