using ComplianceDAL.DTO.Analytics; using ComplianceDAL.Query.GSTR9; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Microsoft.Extensions.Logging; namespace ComplianceDAL.CustomCode.GSTR9; public class GSTR9DAL : IGSTR9DAL { private readonly IQueryExecutor _qe; private readonly ILogger _logger; public GSTR9DAL(IQueryExecutor qe, ILogger logger) { _qe = qe; _logger = logger; } public async Task> GetAnnualSummaryRowsAsync( string gstin, int periodYear, string returnPeriod, LoginDTO login, CancellationToken ct) { try { var rows = await _qe.QueryAsync(login, GSTR9QB.GET_GSTR9_ANNUAL_SUMMARY, new { GSTIN = gstin, PeriodYear = periodYear, ReturnPeriod = returnPeriod, ClientId = login.ClientId, DatabaseName = login.DatabaseName }, cancellationToken: ct); return rows.ToList(); } catch (Exception ex) { _logger.LogError(ex, "GSTR9 DAL: GetAnnualSummaryRowsAsync failed for GSTIN {GSTIN}, PeriodYear {PeriodYear}, ReturnPeriod {ReturnPeriod}", gstin, periodYear, returnPeriod); throw; } } public async Task> GetAnnualHSNSummaryAsync( string gstin, int periodYear, string returnPeriod, LoginDTO login, CancellationToken ct) { try { var rows = await _qe.QueryAsync(login, GSTR9QB.GET_GSTR9_HSN_ANNUAL, new { GSTIN = gstin, PeriodYear = periodYear, ReturnPeriod = returnPeriod, ClientId = login.ClientId, DatabaseName = login.DatabaseName }, cancellationToken: ct); return rows.ToList(); } catch (Exception ex) { _logger.LogError(ex, "GSTR9 DAL: GetAnnualHSNSummaryAsync failed for GSTIN {GSTIN}, PeriodYear {PeriodYear}, ReturnPeriod {ReturnPeriod}", gstin, periodYear, returnPeriod); throw; } } public async Task> GetMissingPeriodMonthsAsync( string gstin, int periodYear, LoginDTO login, CancellationToken ct) { try { var rows = await _qe.QueryAsync(login, GSTR9QB.GET_MISSING_PERIOD_MONTHS, new { GSTIN = gstin, PeriodYear = periodYear, ClientId = login.ClientId, DatabaseName = login.DatabaseName }, cancellationToken: ct); return rows.ToList(); } catch (Exception ex) { _logger.LogError(ex, "GSTR9 DAL: GetMissingPeriodMonthsAsync failed for GSTIN {GSTIN}, PeriodYear {PeriodYear}", gstin, periodYear); throw; } } }