private async Task <RelatorioSondagemPortuguesConsolidadoCabecalhoDto> ObterCabecalho(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros) { var usuario = await mediator.Send(new ObterUsuarioPorCodigoRfQuery() { UsuarioRf = filtros.UsuarioRF }); string dreAbreviacao = "Todas"; if (filtros.DreCodigo != null && filtros.DreCodigo != "0") { var dre = await mediator.Send(new ObterDrePorCodigoQuery() { DreCodigo = filtros.DreCodigo }); dreAbreviacao = dre.Abreviacao; } string ueNomeComTipoEscola = "Todas"; if (filtros.UeCodigo != null & filtros.UeCodigo != String.Empty) { var ue = await mediator.Send(new ObterUePorCodigoQuery(filtros.UeCodigo)); ueNomeComTipoEscola = ue.NomeComTipoEscola; } var proficiencia = !String.IsNullOrEmpty(filtros.GrupoId) ? filtros.GrupoId : filtros.ProficienciaId.ToString(); if (proficiencia == GrupoSondagemEnum.LeituraVozAlta.Name()) { proficiencia = GrupoSondagemEnum.LeituraVozAlta.ShortName(); } else if (proficiencia == GrupoSondagemEnum.ProducaoTexto.Name()) { proficiencia = GrupoSondagemEnum.ProducaoTexto.ShortName(); } else if (proficiencia == ProficienciaSondagemEnum.Escrita.Name()) { proficiencia = ProficienciaSondagemEnum.Escrita.Name(); } else if (proficiencia == ProficienciaSondagemEnum.Leitura.Name()) { proficiencia = ProficienciaSondagemEnum.Leitura.Name(); } return(await Task.FromResult(new RelatorioSondagemPortuguesConsolidadoCabecalhoDto() { DataSolicitacao = DateTime.Now.ToString("dd/MM/yyyy"), Dre = dreAbreviacao, Periodo = $"{ filtros.Bimestre }° Bimestre", Rf = filtros.UsuarioRF, Ue = ueNomeComTipoEscola, Usuario = usuario.Nome, AnoLetivo = filtros.AnoLetivo, AnoTurma = filtros.Ano, Turma = "Todas", ComponenteCurricular = ComponenteCurricularSondagemEnum.Portugues.ShortName(), Proficiencia = proficiencia, EhProducaoTexto = filtros.GrupoId == GrupoSondagemEnum.ProducaoTexto.Name() })); }
private async Task <List <RelatorioSondagemPortuguesConsolidadoRespostaDto> > ObterRespostasGrupo(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros) { GrupoSondagemEnum grupoSondagemEnum = filtros.GrupoId == GrupoSondagemEnum.LeituraVozAlta.Name() ? GrupoSondagemEnum.LeituraVozAlta : GrupoSondagemEnum.ProducaoTexto; var semestre = (filtros.Bimestre <= 2) ? 1 : 2; var dataReferencia = await mediator.Send(new ObterDataPeriodoFimSondagemPorSemestreAnoLetivoQuery(semestre, filtros.AnoLetivo)); int alunosPorAno = await mediator.Send(new ObterTotalAlunosPorUeAnoSondagemQuery( filtros.Ano.ToString(), filtros.UeCodigo, filtros.AnoLetivo, dataReferencia, Convert.ToInt64(filtros.DreCodigo) )); var periodo = await mediator.Send(new ObterPeriodoPorTipoQuery(filtros.Bimestre, TipoPeriodoSondagem.Bimestre)); var perguntas = await mediator.Send(new ObterPerguntasPorGrupoQuery(grupoSondagemEnum, ComponenteCurricularSondagemEnum.Portugues)); var dados = await mediator.Send(new ObterRespostasPorFiltrosQuery() { AnoLetivo = filtros.AnoLetivo, TurmaAno = filtros.Ano, DreCodigo = filtros.DreCodigo, UeCodigo = filtros.UeCodigo, GrupoId = filtros.GrupoId, ComponenteCurricular = ComponenteCurricularSondagemEnum.Portugues, PeriodoId = periodo.Id }); var respostas = new List <RelatorioSondagemPortuguesConsolidadoRespostaDto>(); if (dados == null || !dados.Any()) { PreencherPerguntasForaLista(respostas, perguntas); ObterSemPreenchimento(dados, alunosPorAno, respostas); return(respostas); } PopularListaRetorno(dados, alunosPorAno, perguntas, respostas); return(respostas); }
private async Task <List <RelatorioSondagemPortuguesConsolidadoRespostaDto> > ObterRespostasProficiencia(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros) { IEnumerable <RelatorioSondagemPortuguesPorTurmaPlanilhaQueryDto> linhasSondagem = null; linhasSondagem = await mediator.Send(new ObterRelatorioSondagemPortuguesPorTurmaQuery() { DreCodigo = filtros.DreCodigo, UeCodigo = filtros.UeCodigo, AnoLetivo = filtros.AnoLetivo, AnoTurma = filtros.Ano, Bimestre = filtros.Bimestre, Proficiencia = filtros.ProficienciaId }); var dataReferencia = await mediator.Send(new ObterDataPeriodoFimSondagemPorBimestreAnoLetivoQuery(filtros.Bimestre, filtros.AnoLetivo)); int alunosPorAno = await mediator.Send(new ObterTotalAlunosPorUeAnoSondagemQuery( filtros.Ano.ToString(), filtros.UeCodigo, filtros.AnoLetivo, dataReferencia, Convert.ToInt64(filtros.DreCodigo) )); var respostas = new List <RelatorioSondagemPortuguesConsolidadoRespostaDto>(); var respAgrupado = linhasSondagem.GroupBy(o => o.Resposta).Select(g => new { Label = g.Key, Value = g.Count() }).OrderBy(r => r.Label).ToList(); foreach (var item in respAgrupado) { if (!string.IsNullOrEmpty(item.Label)) { RelatorioSondagemPortuguesConsolidadoRespostaDto itemRetorno = new RelatorioSondagemPortuguesConsolidadoRespostaDto(); itemRetorno.Resposta = MontarTextoProficiencia(item.Label); itemRetorno.Quantidade = item.Value; itemRetorno.Percentual = Math.Round(((decimal)item.Value / (decimal)alunosPorAno) * 100, 2); itemRetorno.Total = alunosPorAno; respostas.Add(itemRetorno); } } var totalRespostas = respostas.Sum(r => r.Quantidade); if (alunosPorAno > totalRespostas) { var totalSemPreenchimento = alunosPorAno - totalRespostas; RelatorioSondagemPortuguesConsolidadoRespostaDto itemRetorno = new RelatorioSondagemPortuguesConsolidadoRespostaDto(); itemRetorno.Resposta = MontarTextoProficiencia(string.Empty); itemRetorno.Quantidade = totalSemPreenchimento; itemRetorno.Percentual = Math.Round(((decimal)totalSemPreenchimento / (decimal)alunosPorAno) * 100, 2); itemRetorno.Total = alunosPorAno; respostas.Add(itemRetorno); } return(respostas); }
private async Task <List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto> > ObterPlanilhas(RelatorioSondagemPortuguesConsolidadoLeituraFiltroDto filtros, int alunosPorAno, GrupoSondagemEnum grupoSondagemEnum = GrupoSondagemEnum.CapacidadeLeitura) { IEnumerable <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaQueryDto> linhasSondagem = await mediator.Send(new ObterRelatorioSondagemPortuguesConsolidadoLeituraQuery() { DreCodigo = filtros.DreCodigo, UeCodigo = filtros.UeCodigo, TurmaCodigo = filtros.TurmaCodigo, AnoLetivo = filtros.AnoLetivo, AnoTurma = filtros.Ano, Bimestre = filtros.Bimestre, Grupo = grupoSondagemEnum }); var planilhas = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto>(); var ordens = linhasSondagem.GroupBy(o => o.Ordem).Select(x => x.FirstOrDefault()).ToList(); if (ordens.Count == 0) { var respostasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto>(); respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = "Sem preenchimento", Quantidade = alunosPorAno, Total = alunosPorAno, Percentual = 1 }); var ordensSondagem = await mediator.Send(new ObterOrdensSondagemPorGrupoQuery() { Grupo = grupoSondagemEnum }); foreach (var ordem in ordensSondagem) { planilhas.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto() { Ordem = ordem.Descricao, Perguntas = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto>() { new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto() { Pergunta = String.Empty, Respostas = respostasDto } } }); } } foreach (var ordem in ordens) { var perguntasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto>(); var perguntas = linhasSondagem.Where(o => o.Ordem == ordem.Ordem).GroupBy(p => p.Pergunta).Select(x => x.FirstOrDefault()).ToList(); foreach (var pergunta in perguntas) { var respostasDto = new List <RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto>(); var respostas = linhasSondagem.Where(o => o.Ordem == ordem.Ordem && o.Pergunta == pergunta.Pergunta).ToList(); var totalRespostas = respostas.Sum(o => o.Quantidade); foreach (var resposta in respostas) { respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = resposta.Resposta, Quantidade = resposta.Quantidade, Total = alunosPorAno, Percentual = Decimal.Divide(resposta.Quantidade, alunosPorAno) }); } respostasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaRespostaDto() { Resposta = "Sem preenchimento", Quantidade = alunosPorAno - totalRespostas, Total = alunosPorAno, Percentual = Decimal.Divide(alunosPorAno - totalRespostas, alunosPorAno) }); perguntasDto.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaPerguntaDto() { Pergunta = pergunta.Pergunta, Respostas = respostasDto }); } planilhas.Add(new RelatorioSondagemPortuguesConsolidadoLeituraPlanilhaDto() { Ordem = ordem.Ordem, Perguntas = perguntasDto }); } return(await Task.FromResult(planilhas)); }