using GB5Shared.DTO.Framework.Login; using GB5Shared.QueueReader; using GB5Shared.Telemetry; using GoodBooks.PAY.PAYBLL.Cashback; using Microsoft.Extensions.Logging; namespace GoodBooks.PAY.PAYSL.Services.Handlers; // Processes a CASHBACK queue message by running all pending cashback payouts for the tenant. // Message payload is ignored — the BLL fetches all due payouts from TCASHBACKLEDGER. public sealed class CashbackQueueHandler : IJobQueueHandler { public string MessageType => "CASHBACK"; private readonly ICashbackLedgerBLL _bll; private readonly ILogger _logger; public CashbackQueueHandler(ICashbackLedgerBLL bll, ILogger logger) { _bll = bll; _logger = logger; } public async Task HandleAsync(string payload, LoginDTO login, long queueId, CancellationToken ct) { GB5Trace.Step("cashback-queue-process", new { TenantId = login.ClientId }); _logger.LogInformation("CashbackQueueHandler: processing pending payouts for tenant {TenantId}", login.ClientId); await _bll.ProcessPendingPayoutsAsync(login, ct).ConfigureAwait(false); } }