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 <Guid> Handle(ObterCodigoCorrelacaoQuery request, CancellationToken cancellationToken) { var guidRelatorio = Guid.NewGuid(); var mensagem = new MensagemInserirCodigoCorrelacaoDto(request.TipoRelatorio, TipoFormatoRelatorio.Pdf); await mediator.Send(new InserirFilaRabbitCommand(new PublicaFilaRelatoriosDto(RotasRabbit.FilaSgp, RotasRabbit.ExchangeSgp, mensagem, RotasRabbit.RotaRelatorioCorrelacaoInserir, guidRelatorio, request.UsuarioRf))); return(guidRelatorio); }