RelatorioRepository.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Data;
  2. using AGEHAB.RelatorioSeadIpasgo.Application.Abstractions;
  3. using AGEHAB.RelatorioSeadIpasgo.Domain.Entities;
  4. using Dapper;
  5. using Microsoft.Data.SqlClient;
  6. namespace AGEHAB.RelatorioSeadIpasgo.Infrastructure.Database;
  7. public class RelatorioRepository : IRelatorioRepository
  8. {
  9. private readonly string _connectionString;
  10. public RelatorioRepository(string connectionString) => _connectionString = connectionString;
  11. public async Task<IReadOnlyList<Competencia>> ObterCompetenciasAsync(CancellationToken cancellationToken)
  12. {
  13. using IDbConnection db = new SqlConnection(_connectionString);
  14. var command = new CommandDefinition("""
  15. SELECT TOP 12
  16. HANDLE AS Handle,
  17. COMPETENCIA AS CompetenciaData
  18. FROM FP_COMPETENCIAS
  19. ORDER BY COMPETENCIA DESC
  20. """, cancellationToken: cancellationToken);
  21. var resultado = await db.QueryAsync<Competencia>(command);
  22. return resultado.ToList();
  23. }
  24. public async Task<IReadOnlyList<dynamic>> ObterRelatorioAsync(int competenciaHandle, string tiposCalculo, CancellationToken cancellationToken)
  25. {
  26. using IDbConnection db = new SqlConnection(_connectionString);
  27. var parametros = new DynamicParameters();
  28. parametros.Add("@CompetenciaHandle", competenciaHandle, DbType.Int32);
  29. parametros.Add("@TiposCalculo", tiposCalculo, DbType.String);
  30. var command = new CommandDefinition("sp_AgehabRelatorioFinal", parametros, commandType: CommandType.StoredProcedure, cancellationToken: cancellationToken);
  31. var resultado = await db.QueryAsync(command);
  32. return resultado.ToList();
  33. }
  34. }