| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System.IO;
- using AGEHAB.RelatorioSeadIpasgo.Application.Abstractions;
- using AGEHAB.RelatorioSeadIpasgo.Application.DTOs;
- using AGEHAB.RelatorioSeadIpasgo.Domain.Services;
- namespace AGEHAB.RelatorioSeadIpasgo.Application.UseCases;
- public class GerarRelatorioUseCase
- {
- private readonly IRelatorioRepository _repository;
- private readonly IIpasgoFiltroService _filtroIpasgoService;
- private readonly IExcelRelatorioWriter _excelWriter;
- private readonly IIpasgoZipWriter _zipWriter;
- public GerarRelatorioUseCase(
- IRelatorioRepository repository,
- IIpasgoFiltroService filtroIpasgoService,
- IExcelRelatorioWriter excelWriter,
- IIpasgoZipWriter zipWriter)
- {
- _repository = repository;
- _filtroIpasgoService = filtroIpasgoService;
- _excelWriter = excelWriter;
- _zipWriter = zipWriter;
- }
- public async Task ExecutarAsync(GerarRelatorioRequest request, CancellationToken cancellationToken)
- {
- cancellationToken.ThrowIfCancellationRequested();
- GarantirDiretorio(request.ExcelPath);
- var linhas = await _repository.ObterRelatorioAsync(request.Competencia.Handle, request.TipoCalculo.Valor, cancellationToken);
- cancellationToken.ThrowIfCancellationRequested();
- if (request.Relatorio.EhIpasgo)
- {
- if (string.IsNullOrWhiteSpace(request.ZipPath))
- {
- throw new InvalidOperationException("Escolha onde salvar o ZIP do IPASGO.");
- }
- GarantirDiretorio(request.ZipPath);
- linhas = _filtroIpasgoService.Filtrar(linhas);
- cancellationToken.ThrowIfCancellationRequested();
- SubstituirArquivo(request.ZipPath);
- _zipWriter.Escrever(request.Competencia.Referencia, linhas, request.ZipPath, cancellationToken);
- }
- cancellationToken.ThrowIfCancellationRequested();
- SubstituirArquivo(request.ExcelPath);
- _excelWriter.Escrever(request.Relatorio.TituloExcel, linhas, request.ExcelPath, cancellationToken);
- }
- private static void GarantirDiretorio(string filePath)
- {
- var diretorio = Path.GetDirectoryName(filePath);
- if (!string.IsNullOrWhiteSpace(diretorio) && !Directory.Exists(diretorio))
- {
- Directory.CreateDirectory(diretorio);
- }
- }
- private static void SubstituirArquivo(string filePath)
- {
- if (File.Exists(filePath))
- {
- File.Delete(filePath);
- }
- }
- }
|