public async Task <IActionResult> Gerar([FromBody] RelatorioImpressaoFiltroDto filtros,
                                                [FromServices] IRelatorioImpressaoUseCase relatorioImpressaoUseCase)
        {
            await relatorioImpressaoUseCase.Executar(filtros);

            return(Ok());
        }
        private TipoRelatorio?GetTipoRelatorio(RelatorioImpressaoFiltroDto filtros)
        {
            TipoRelatorio?tipoRelatorio = null;

            if (filtros.ComponenteCurricularId == ComponenteCurricularEnum.Matematica)
            {
                if (filtros.TurmaCodigo > 0 && (filtros.ProficienciaId == ProficienciaEnum.CampoAditivo || filtros.ProficienciaId == ProficienciaEnum.CampoMultiplicativo ||
                                                filtros.ProficienciaId == ProficienciaEnum.Numeros || filtros.ProficienciaId == ProficienciaEnum.Autoral))
                {
                    tipoRelatorio = TipoRelatorio.RelatorioMatematicaPorTurma;
                }
                else if (filtros.TurmaCodigo <= 0)
                {
                    if (filtros.ProficienciaId == ProficienciaEnum.CampoAditivo || filtros.ProficienciaId == ProficienciaEnum.CampoMultiplicativo)
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioMatematicaConsolidadoAdtMult;
                    }
                    else
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioMatematicaConsolidado;
                    }
                }
            }

            if (filtros.ComponenteCurricularId == ComponenteCurricularEnum.Portugues)
            {
                if (filtros.TurmaCodigo > 0)
                {
                    if (!string.IsNullOrEmpty(filtros.Ano) && int.Parse(filtros.Ano) >= 4 && filtros.GrupoId.Equals("e27b99a3-789d-43fb-a962-7df8793622b1"))
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioPortuguesCapLeituraPorTurma;
                    }
                    else
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioPortuguesPorTurma;
                    }
                }
                else if (filtros.TurmaCodigo <= 0)
                {
                    if (filtros.ProficienciaId == ProficienciaEnum.Escrita || filtros.ProficienciaId == ProficienciaEnum.Leitura ||
                        filtros.GrupoId != GrupoEnum.CapacidadeLeitura.Name())
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioPortuguesConsolidadoLeitEscProdTexto;
                    }
                    else
                    {
                        tipoRelatorio = TipoRelatorio.RelatorioPortuguesConsolidado;
                    }
                }
            }

            return(tipoRelatorio);
        }
        public async Task <string> ExecutarSync(RelatorioImpressaoFiltroDto filtros)
        {
            TipoRelatorio?tipoRelatorio = GetTipoRelatorio(filtros);

            return(await mediator.Send(new ObterRelatorioSincronoQuery(tipoRelatorio.Value, filtros, filtros.UsuarioRF)));
        }
        public async Task Executar(RelatorioImpressaoFiltroDto filtros)
        {
            TipoRelatorio?tipoRelatorio = GetTipoRelatorio(filtros);

            await mediator.Send(new GerarRelatorioCommand(tipoRelatorio.Value, filtros, filtros.UsuarioRF));
        }