Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
        }