public async Task Executar(FiltroRelatorioDto filtroRelatorioDto) { SentrySdk.AddBreadcrumb($"Obtendo dados do relatório", "8 - MonitorarStatusRelatorioUseCase"); var dadosRelatorio = filtroRelatorioDto.ObterObjetoFiltro <DadosRelatorioDto>(); var detalhesRelatorio = await mediator.Send(new ObterDetalhesRelatorioQuery(dadosRelatorio.RequisicaoId, dadosRelatorio.JSessionId)); SentrySdk.AddBreadcrumb($"dados do relatório OK", "8 - MonitorarStatusRelatorioUseCase"); if (detalhesRelatorio != null && detalhesRelatorio.Pronto) { SentrySdk.AddBreadcrumb($"Indo publicar na fila Prontos..", "8 - MonitorarStatusRelatorioUseCase"); //TODO: Aplicar Polly ?? if (await mediator.Send(new SalvarRelatorioJasperLocalCommand(dadosRelatorio.JSessionId, dadosRelatorio.RequisicaoId, dadosRelatorio.ExportacaoId, dadosRelatorio.CodigoCorrelacao))) { servicoFila.PublicaFila(new PublicaFilaDto(dadosRelatorio, RotasRabbit.RotaRelatoriosProntosSgp, RotasRabbit.ExchangeSgp, filtroRelatorioDto.CodigoCorrelacao)); SentrySdk.CaptureMessage("8 - MonitorarStatusRelatorioUseCase - Publicado na fila PRONTO OK!"); } else { PublicarNovamenteNaFila(filtroRelatorioDto, dadosRelatorio); } } else { PublicarNovamenteNaFila(filtroRelatorioDto, dadosRelatorio); } }
public async Task <bool> Handle(GerarRelatorioAtaFinalHtmlParaPdfCommand request, CancellationToken cancellationToken) { List <string> paginasEmHtml = new List <string>(); foreach (var modelPagina in request.Paginas) { string html = string.Empty; html = GerarHtmlRazor(modelPagina, request.NomeTemplate); html = html.Replace("logo.png", SmeConstants.LogoSme); paginasEmHtml.Add(html); } //TODO: FILA PARA RELATORIO SEM DADOS? if (paginasEmHtml.Any()) { PdfGenerator pdfGenerator = new PdfGenerator(converter); var directory = AppDomain.CurrentDomain.BaseDirectory; SentrySdk.AddBreadcrumb($"Gerando PDF", $"Caminho geração : {directory}"); pdfGenerator.ConvertToPdf(paginasEmHtml, directory, request.CodigoCorrelacao.ToString()); SentrySdk.AddBreadcrumb($"Indo publicar na fila Prontos..", "8 - MonitorarStatusRelatorioUseCase"); servicoFila.PublicaFila(new PublicaFilaDto(new MensagemRelatorioProntoDto(request.MensagemUsuario, string.Empty), RotasRabbit.RotaRelatoriosProntosSgp, RotasRabbit.ExchangeSgp, request.CodigoCorrelacao)); SentrySdk.CaptureMessage("8 - MonitorarStatusRelatorioUseCase - Publicado na fila PRONTO OK!"); } return(true); }
public async Task <Unit> Handle(GerarExcelGenericoCommand request, CancellationToken cancellationToken) { try { using (var workbook = new XLWorkbook()) { var worksheet = workbook.Worksheets.Add(request.NomeWorkSheet); if (!request.ObjetoExportacao.Any()) { throw new NegocioException("Não foi possível localizar o objeto de consulta."); } var properties = ExtractClassPropertyNames(request.ObjetoExportacao.FirstOrDefault()); MontarCabecalho(worksheet, properties); MontarCorpo(request, worksheet); var caminhoBase = AppDomain.CurrentDomain.BaseDirectory; var caminhoParaSalvar = Path.Combine(caminhoBase, $"relatorios", request.CodigoCorrelacao.ToString()); workbook.SaveAs($"{caminhoParaSalvar}.xlsx"); } servicoFila.PublicaFila(new PublicaFilaDto(new MensagemRelatorioProntoDto(), RotasRabbit.RotaRelatoriosProntosSgp, null, request.CodigoCorrelacao)); return(await Task.FromResult(Unit.Value)); } catch (Exception ex) { SentrySdk.CaptureException(ex); throw ex; } }
public async Task <bool> Handle(GerarRelatorioAssincronoCommand request, CancellationToken cancellationToken) { try { ParametrosRelatorioDto parametrosDoDto = ObterParametrosRelatorio(request.Dados); var post = new ExecucaoRelatorioRequisicaoDto() { UnidadeRelatorioUri = request.CaminhoRelatorio, Async = false, SalvarSnapshot = false, FormatoSaida = request.Formato.Name(), Interativo = false, IgnorarPaginacao = false, Paginas = null, Parametros = parametrosDoDto }; SentrySdk.CaptureMessage("6.1 - Obtendo jSessionId..."); var jsessionId = await loginService.ObterTokenAutenticacao(configuration.GetSection("ConfiguracaoJasper:Username").Value, configuration.GetSection("ConfiguracaoJasper:Password").Value); SentrySdk.CaptureMessage($"6.2 - jSessionId = {jsessionId}"); SentrySdk.CaptureMessage("6.3 - Solicitando relatório..."); var retorno = await execucaoRelatorioService.SolicitarRelatorio(post, jsessionId); var exportacaoId = retorno?.Exports?.FirstOrDefault()?.Id; SentrySdk.CaptureMessage($"6.4 - Exportação Id = {exportacaoId}"); if (exportacaoId != null) { var dadosRelatorio = new DadosRelatorioDto(retorno.RequestId, exportacaoId.Value, request.CodigoCorrelacao, jsessionId); var publicacaoFila = new PublicaFilaDto(dadosRelatorio, RotasRabbit.RotaRelatoriosProcessando, null, request.CodigoCorrelacao); servicoFila.PublicaFila(publicacaoFila); var jsonPublicaFila = UtilJson.ConverterApenasCamposNaoNulos(publicacaoFila); Console.WriteLine(jsonPublicaFila); SentrySdk.CaptureMessage("6.5 - Sucesso na publicação da fila: " + publicacaoFila.Rota); return(true); } SentrySdk.CaptureMessage("6.6 - Erro na geração"); return(false); } catch (Exception ex) { SentrySdk.CaptureException(ex); throw ex; } }
public Task <Guid> Handle(GerarCodigoCorrelacaoSGPCommand request, CancellationToken cancellationToken) { var novaCorrelacao = Guid.NewGuid(); servicoFila.PublicaFila(new PublicaFilaDto(novaCorrelacao, RotasRabbit.RotaRelatorioCorrelacaoCopiar, null, request.CodigoCorrelacaoParaCopiar)); return(Task.FromResult(novaCorrelacao)); }
public async Task <Unit> Handle(GerarRelatorioAtaFinalExcelCommand request, CancellationToken cancellationToken) { try { if (!request.ObjetoExportacao.Any()) { throw new NegocioException("Não foi possível localizar o objeto de consulta."); } var lstCodigosCorrelacao = new Dictionary <Guid, string>(); var dadosAgrupadosTurma = request.ObjetoExportacao.GroupBy(g => g.Cabecalho); var modalidade = request.ObjetoExportacao.Select(o => o.Modalidade).FirstOrDefault(); for (int i = 0; i < dadosAgrupadosTurma.Count(); i++) { var codigoCorrelacao = Guid.NewGuid(); var mensagem = new MensagemInserirCodigoCorrelacaoDto(TipoRelatorio.ConselhoClasseAtaFinal, TipoFormatoRelatorio.Xlsx); await mediator.Send(new InserirFilaRabbitCommand(new PublicaFilaDto(mensagem, RotasRabbit.RotaRelatorioCorrelacaoInserir, RotasRabbit.ExchangeSgp, codigoCorrelacao, request.UsuarioRf))); using (var workbook = new XLWorkbook()) { var worksheet = workbook.Worksheets.Add(request.NomeWorkSheet); var objetoExportacao = dadosAgrupadosTurma.ElementAt(i); var tabelaDados = request.TabelasDados.ElementAt(i); MontarCabecalho(worksheet, objetoExportacao.Key, tabelaDados.Columns.Count); worksheet.Cell(LINHA_GRUPOS, 1).InsertData(tabelaDados); MergearTabela(worksheet, tabelaDados); AdicionarEstilo(worksheet, tabelaDados); var caminhoBase = AppDomain.CurrentDomain.BaseDirectory; var caminhoParaSalvar = Path.Combine(caminhoBase, $"relatorios", $"{codigoCorrelacao}"); workbook.SaveAs($"{caminhoParaSalvar}.xlsx"); lstCodigosCorrelacao.Add(codigoCorrelacao, objetoExportacao.Key.Turma); } } foreach (var codigoCorrelacao in lstCodigosCorrelacao) { servicoFila.PublicaFila(new PublicaFilaDto(ObterNotificacao(modalidade, codigoCorrelacao.Value), RotasRabbit.RotaRelatoriosProntosSgp, RotasRabbit.ExchangeSgp, codigoCorrelacao.Key)); } return(await Task.FromResult(Unit.Value)); } catch (Exception ex) { SentrySdk.CaptureException(ex); throw ex; } }
public async Task <string> Handle(GerarRelatorioHtmlParaPdfCommand request, CancellationToken cancellationToken) { var html = await htmlHelper.RenderRazorViewToString(request.NomeTemplate, request.Model); html = html.Replace("logoMono.png", SmeConstants.LogoSmeMono); html = html.Replace("logo.png", SmeConstants.LogoSme); var caminhoBase = AppDomain.CurrentDomain.BaseDirectory; var nomeArquivo = Path.Combine(caminhoBase, "relatorios", request.CodigoCorrelacao.ToString()); PdfGenerator pdfGenerator = new PdfGenerator(converter); pdfGenerator.Converter(html, nomeArquivo, request.TituloRelatorioRodape); if (request.EnvioPorRabbit) { servicoFila.PublicaFila(new PublicaFilaDto(new MensagemRelatorioProntoDto(request.MensagemUsuario, request.MensagemTitulo), RotasRabbit.RotaRelatoriosProntosSgp, RotasRabbit.ExchangeSgp, request.CodigoCorrelacao)); return(string.Empty); } else { return(request.CodigoCorrelacao.ToString()); } }
public Task <bool> Handle(RetornarRelatorioProntoCommand request, CancellationToken cancellationToken) { servicoFila.PublicaFila(new PublicaFilaDto(request, RotasRabbit.RotaRelatoriosProntosSgp)); return(Task.FromResult(true)); }