public async Task <Guid> RelatorioFaltasFrequencias([FromBody] FiltroRelatorioFaltasFrequenciasDto filtro, [FromServices] IRelatorioFaltasFrequenciasUseCase relatorioFaltasFrequenciasUseCase)
        {
            var codigoCorrelacao = Guid.NewGuid();
            await relatorioFaltasFrequenciasUseCase.Executar(new FiltroRelatorioDto()
            {
                CodigoCorrelacao = codigoCorrelacao,
                Mensagem         = JsonConvert.SerializeObject(filtro)
            });

            return(codigoCorrelacao);
        }
        private static void DefinirNomeBimestre(RelatorioFaltasFrequenciaDto model, FiltroRelatorioFaltasFrequenciasDto filtro)
        {
            var selecionouTodosBimestres = filtro.Bimestres.Any(c => c == -99);
            var selecionouBimestreFinal  = filtro.Bimestres.Any(c => c == 0);

            model.Bimestre = selecionouTodosBimestres ?
                             "Todos"
                :
                             filtro.Bimestres.Count() > 1 ?
                             string.Empty
                :
                             selecionouBimestreFinal ?
                             "Final"
                :
                             filtro.Bimestres.FirstOrDefault().ToString();
        }
 private static void OrdenarAlunos(FiltroRelatorioFaltasFrequenciasDto filtro, Dictionary <CondicoesRelatorioFaltasFrequencia, Func <double, double, bool> > operacao, RelatorioFaltaFrequenciaComponenteDto componente)
 {
     if (filtro.Condicao != CondicoesRelatorioFaltasFrequencia.TodosEstudantes)
     {
         componente.Alunos = (from a in componente.Alunos
                              where
                              ((filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Faltas || filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Ambos) ?
                               operacao[filtro.Condicao](a.NumeroFaltasNaoCompensadas, filtro.ValorCondicao)
                              :
                               operacao[filtro.Condicao](a.Frequencia, filtro.ValorCondicao))
                              select a)
                             .OrderByDescending(c => !string.IsNullOrWhiteSpace(c.NumeroChamada))
                             .ThenBy(c => c.NomeTurma)
                             .ThenBy(c => c.NomeAluno)
                             .ToList();
     }
     else
     {
         componente.Alunos = (from a in componente.Alunos select a).OrderByDescending(c => !string.IsNullOrWhiteSpace(c.NumeroChamada))
                             .ThenBy(c => c.NomeTurma)
                             .ThenBy(c => c.NomeAluno)
                             .ToList();
     }
 }
        private static void DefinirNomeComponente(RelatorioFaltasFrequenciaDto model, FiltroRelatorioFaltasFrequenciasDto filtro, IEnumerable <Data.ComponenteCurricular> componentes)
        {
            var selecionouTodosComponentes = filtro.ComponentesCurriculares.Any(c => c == "-99");
            var primeiroComponente         = filtro.ComponentesCurriculares.FirstOrDefault();

            model.ComponenteCurricular = selecionouTodosComponentes ?
                                         "Todos"
                :
                                         filtro.ComponentesCurriculares.Count() == 1 ?
                                         componentes.FirstOrDefault(c => c.Codigo.ToString() == primeiroComponente).Descricao
                :
                                         string.Empty;
        }
        private static void DefinirCabecalho(ObterRelatorioFaltasFrequenciaPdfQuery request, RelatorioFaltasFrequenciaDto model, FiltroRelatorioFaltasFrequenciasDto filtro, IEnumerable <RelatorioFaltaFrequenciaDreDto> dres, IEnumerable <Data.ComponenteCurricular> componentes)
        {
            var selecionouTodasDres = string.IsNullOrWhiteSpace(filtro.CodigoDre) || filtro.CodigoDre == "-99";
            var selecionouTodasUes  = string.IsNullOrWhiteSpace(filtro.CodigoUe) || filtro.CodigoUe == "-99";

            model.Dres = dres.ToList();
            model.Dres.RemoveAll(c => !c.Ues.Any());
            model.Dre = selecionouTodasDres ? "Todas" : dres.FirstOrDefault().NomeDre;
            model.Ue  = selecionouTodasUes ? "Todas" : dres.FirstOrDefault().Ues.FirstOrDefault().NomeUe;

            var selecionouTodosAnos = filtro.AnosEscolares.Any(c => c == "-99");
            var ano = filtro.AnosEscolares.FirstOrDefault();

            model.Ano = selecionouTodosAnos && !(filtro.Modalidade == Modalidade.EJA) ?
                        "Todos"
                :
                        filtro.AnosEscolares.Count() > 1 ?
                        string.Empty
                :
                        ano == "-99" ? "Todos" : ano;

            DefinirNomeBimestre(model, filtro);
            DefinirNomeComponente(model, filtro, componentes);

            model.Usuario         = request.Filtro.NomeUsuario;
            model.RF              = request.Filtro.CodigoRf;
            model.Data            = DateTime.Now.ToString("dd/MM/yyyy");
            model.ExibeFaltas     = filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Faltas || filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Ambos;
            model.ExibeFrequencia = filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Frequencia || filtro.TipoRelatorio == TipoRelatorioFaltasFrequencia.Ambos;

            var semestreEja = "";

            if (filtro.Modalidade == Modalidade.EJA)
            {
                semestreEja = $"{filtro.Semestre} Semestre";
            }

            model.Modalidade = $"{filtro.Modalidade.Name()} {semestreEja}";
        }
        private List <RelatorioFaltaFrequenciaDreDto> FiltrarFaltasFrequencia(List <RelatorioFaltaFrequenciaDreDto> dres, FiltroRelatorioFaltasFrequenciasDto filtro)
        {
            Dictionary <CondicoesRelatorioFaltasFrequencia, Func <double, double, bool> > operacao = new Dictionary <CondicoesRelatorioFaltasFrequencia, Func <double, double, bool> >();

            operacao.Add(CondicoesRelatorioFaltasFrequencia.Igual, (valor, valorFiltro) => valor == valorFiltro);
            operacao.Add(CondicoesRelatorioFaltasFrequencia.Maior, (valor, valorFiltro) => valor > valorFiltro);
            operacao.Add(CondicoesRelatorioFaltasFrequencia.Menor, (valor, valorFiltro) => valor < valorFiltro);

            if (dres != null)
            {
                foreach (var dre in dres)
                {
                    if (dre.Ues != null)
                    {
                        dre.Ues = dre.Ues.OrderBy(c => c.NomeUe).ToList();
                    }
                    foreach (var ue in dre.Ues)
                    {
                        foreach (var ano in ue.Anos)
                        {
                            foreach (var bimestre in ano.Bimestres)
                            {
                                foreach (var componente in bimestre.Componentes)
                                {
                                    OrdenarAlunos(filtro, operacao, componente);
                                }
                                bimestre.Componentes.RemoveAll(c => !c.Alunos.Any());
                                bimestre.Componentes = bimestre.Componentes.OrderBy(c => c.NomeComponente).ToList();
                            }
                            ano.Bimestres.RemoveAll(c => !c.Componentes.Any());
                        }
                        ue.Anos.RemoveAll(c => !c.Bimestres.Any());
                    }
                    dre.Ues.RemoveAll(c => !c.Anos.Any());
                }
                dres.RemoveAll(c => !c.Ues.Any());
                dres = dres.OrderBy(c => c.NomeDre).ToList();
            }
            return(dres);
        }
示例#7
0
 public ObterRelatorioFaltasFrequenciaPdfQuery(FiltroRelatorioFaltasFrequenciasDto filtro)
 {
     Filtro = filtro;
 }