private void AdicionarAtribuicoesEsporadicas(RelatorioAtribuicaoCjDto relatorio, IEnumerable <AtribuicaoEsporadica> lstAtribuicaoEsporadica, IEnumerable <ServidorCargoDto> cargosServidor) { relatorio.AtribuicoesEsporadicas.AddRange( lstAtribuicaoEsporadica.Select(atribuicao => { var cargo = cargosServidor.FirstOrDefault(cargo => cargo.CodigoRF == atribuicao.ProfessorRf); var retorno = new AtribuicaoEsporadicaDto() { AtribuidoPor = atribuicao.CriadoPor, CodigoDre = atribuicao.DreId, CodigoUe = atribuicao.UeId, DataAtribuicao = atribuicao.CriadoEm.ToString("dd/MM/yyyy"), DataInicio = atribuicao.DataInicio.ToString("dd/MM/yyyy"), DataFim = atribuicao.DataFim.ToString("dd/MM/yyyy"), NomeUsuario = cargo.NomeRelatorio, Cargo = cargo.CargoRelatorio }; return(retorno); })); }
private void OrdernarRelatorio(RelatorioAtribuicaoCjDto relatorio, TipoVisualizacaoRelatorioAtribuicaoCJ tipoVisualizacao) { if (relatorio.RelatorioVazio(tipoVisualizacao)) { throw new NegocioException("Não foram encontrados dados a serem impressos"); } else { if (relatorio.AtribuicoesEsporadicas.Any()) { relatorio.AtribuicoesEsporadicas = relatorio.AtribuicoesEsporadicas.OrderBy(o => o.NomeUsuario).ToList(); } if (relatorio.AtribuicoesCjPorTurma.Any()) { relatorio.AtribuicoesCjPorTurma = relatorio.AtribuicoesCjPorTurma.OrderBy(o => o.NomeTurma).ToList(); relatorio.AtribuicoesCjPorTurma.ForEach(a => { a.AtribuicoesCjProfessor = a.AtribuicoesCjProfessor.OrderBy(o => o.ComponenteCurricular).ThenBy(o => o.NomeProfessorCj).ToList(); }); } if (relatorio.AtribuicoesCjPorProfessor.Any()) { relatorio.AtribuicoesCjPorProfessor = relatorio.AtribuicoesCjPorProfessor.OrderBy(o => o.NomeProfessor).ToList(); relatorio.AtribuicoesCjPorProfessor.ForEach(a => { a.AtribuiicoesCjTurma = a.AtribuiicoesCjTurma.OrderBy(o => o.NomeTurma).ThenBy(o => o.ComponenteCurricular).ToList(); }); } if (relatorio.Dres.Any()) { relatorio.Dres = relatorio.Dres.OrderBy(o => o.Nome).ToList(); relatorio.Dres.ForEach(dre => { dre.Ues = dre.Ues.OrderBy(o => o.Nome).ToList(); dre.Ues.ForEach(ue => { if (ue.AtribuicoesEsporadicas.Any()) { ue.AtribuicoesEsporadicas = ue.AtribuicoesEsporadicas.OrderBy(o => o.NomeUsuario).ToList(); } if (ue.AtribuicoesCjPorTurma.Any()) { ue.AtribuicoesCjPorTurma = ue.AtribuicoesCjPorTurma.OrderBy(o => o.NomeTurma).ToList(); ue.AtribuicoesCjPorTurma.ForEach(a => { a.AtribuicoesCjProfessor = a.AtribuicoesCjProfessor.OrderBy(o => o.ComponenteCurricular).ThenBy(o => o.NomeProfessorCj).ToList(); }); } if (ue.AtribuicoesCjPorProfessor.Any()) { ue.AtribuicoesCjPorProfessor = ue.AtribuicoesCjPorProfessor.OrderBy(o => o.NomeProfessor).ToList(); ue.AtribuicoesCjPorProfessor.ForEach(a => { a.AtribuiicoesCjTurma = a.AtribuiicoesCjTurma.OrderBy(o => o.NomeTurma).ThenBy(o => o.ComponenteCurricular).ToList(); }); } }); }); } } }
private async Task MontarCabecalho(RelatorioAtribuicaoCjDto relatorio, string dreCodigo, string ueCodigo, Modalidade?modalidade, int?semestre, string codigoTurma, string professorRf, string usuarioRf) { if (!string.IsNullOrEmpty(dreCodigo)) { var dre = await mediator.Send(new ObterDrePorCodigoQuery(dreCodigo)); relatorio.DreNome = dre.Abreviacao; } else { relatorio.DreNome = "Todas"; } if (!string.IsNullOrEmpty(ueCodigo)) { var ue = await mediator.Send(new ObterUePorCodigoQuery(ueCodigo)); relatorio.UeNome = ue.NomeRelatorio; } else { relatorio.UeNome = "Todas"; } if (modalidade.HasValue) { relatorio.Modalidade = modalidade.Name(); } else { relatorio.Modalidade = "Todas"; } if (semestre.HasValue && semestre > 0) { relatorio.Semestre = $"{semestre}º Semestre"; } if (!string.IsNullOrEmpty(codigoTurma)) { var turma = await mediator.Send(new ObterTurmaQuery(codigoTurma)); relatorio.Turma = turma.NomeRelatorio; } else { relatorio.Turma = "Todas"; } if (!string.IsNullOrEmpty(professorRf)) { var professor = await mediator.Send(new ObterUsuarioPorCodigoRfQuery(professorRf)); relatorio.Professor = professor.Nome; relatorio.RfProfessor = professor.CodigoRf; } var usuario = await mediator.Send(new ObterUsuarioPorCodigoRfQuery(usuarioRf)); relatorio.Usuario = usuario.Nome; relatorio.RfUsuario = usuario.CodigoRf; }
public async Task Executar(FiltroRelatorioDto request) { var filtros = request.ObterObjetoFiltro <FiltroRelatorioAtribuicaoCJDto>(); var relatorio = new RelatorioAtribuicaoCjDto(); await MontarCabecalho(relatorio, filtros.DreCodigo, filtros.UeCodigo, filtros.Modalidade, filtros.Semestre, filtros.TurmaCodigo, filtros.UsuarioRf, request.UsuarioLogadoRF); var lstAtribuicaoEsporadica = await mediator.Send(new ObterAtribuicoesEsporadicasPorFiltroQuery(filtros.AnoLetivo, filtros.UsuarioRf, filtros.DreCodigo, filtros.UsuarioRf, filtros.UeCodigo)); var lstAtribuicaoCJ = await mediator.Send(new ObterAtribuicoesCJPorFiltroQuery() { AnoLetivo = filtros.AnoLetivo, DreCodigo = filtros.DreCodigo, UeId = filtros.UeCodigo, UsuarioRf = filtros.UsuarioRf, TurmaId = filtros.TurmaCodigo, Modalidade = filtros.Modalidade, Semestre = filtros.Semestre }); var lstServidores = new List <string>(); lstServidores.AddRange(lstAtribuicaoEsporadica.Select(s => s.ProfessorRf)); lstServidores.AddRange(lstAtribuicaoCJ.Select(cj => cj.ProfessorRf)); var lstServidoresArray = lstServidores?.Distinct().ToArray(); var cargosServidores = await mediator.Send(new ObterCargosAtividadesPorRfQuery(lstServidoresArray)); var lstProfServidorTitulares = await mediator.Send(new ObterProfessorTitularComponenteCurricularPorCodigosRfQuery(lstServidoresArray)); if (filtros.ExibirAtribuicoesExporadicas) { AdicionarAtribuicoesEsporadicas(relatorio, lstAtribuicaoEsporadica, cargosServidores); } var turmasId = lstAtribuicaoCJ.Select(t => t.Turma.Codigo)?.Distinct().ToArray(); var componentesId = lstAtribuicaoCJ.Select(t => t.ComponenteCurricularId.ToString())?.Distinct().ToArray(); var lstProfTitulares = await mediator.Send(new ObterProfessorTitularComponenteCurricularPorTurmaQuery(turmasId)); var aulas = Enumerable.Empty <AulaVinculosDto>(); if (filtros.ExibirAulas) { aulas = await mediator.Send(new ObterAulaVinculosPorTurmaComponenteQuery(turmasId, componentesId, true)); } AdicionarAtribuicoesCJ(relatorio, lstAtribuicaoCJ, lstProfTitulares, lstProfServidorTitulares, lstAtribuicaoEsporadica, cargosServidores, aulas, filtros.TipoVisualizacao, filtros.ExibirAulas, filtros.Modalidade); if (string.IsNullOrEmpty(filtros.DreCodigo) || string.IsNullOrEmpty(filtros.UeCodigo)) { relatorio.ExibirDre = true; relatorio = await mediator.Send(new AgruparRelatorioAtribuicaoCJPorDreUeQuery(relatorio)); } OrdernarRelatorio(relatorio, filtros.TipoVisualizacao); await mediator.Send(new GerarRelatorioHtmlParaPdfCommand("RelatorioAtribuioesCj", relatorio, request.CodigoCorrelacao)); }
private void AdicionarAtribuicoesCJ(RelatorioAtribuicaoCjDto relatorio, IEnumerable <AtribuicaoCJ> lstAtribuicaoCJ, IEnumerable <ProfessorTitularComponenteCurricularDto> lstProfTitulares, IEnumerable <ProfessorTitularComponenteCurricularDto> lstProfServidorTitulares, IEnumerable <AtribuicaoEsporadica> lstAtribuicaoEsporadica, IEnumerable <ServidorCargoDto> cargosServidores, IEnumerable <AulaVinculosDto> aulas, TipoVisualizacaoRelatorioAtribuicaoCJ tipoVisualizacao, bool exibirAulas, Modalidade?filtroModalidade) { if (tipoVisualizacao == TipoVisualizacaoRelatorioAtribuicaoCJ.Professor) { var agrupamento = lstAtribuicaoCJ.GroupBy(cj => new { cj.ProfessorRf, cj.ProfessorNome }); relatorio.AtribuicoesCjPorProfessor.AddRange( agrupamento.Select(professor => { var retorno = new AtribuicaoCjPorProfessorDto(); string tipoCJ = ObterTipoProfessorCJ(professor.Key.ProfessorRf, lstAtribuicaoEsporadica, lstProfServidorTitulares, cargosServidores); var professorNome = cargosServidores.FirstOrDefault(p => p.CodigoRF == professor.Key.ProfessorRf)?.NomeServidor; retorno.NomeProfessor = $"{(!string.IsNullOrEmpty(professor.Key.ProfessorNome) ? professor.Key.ProfessorNome : professorNome)} ({professor.Key.ProfessorRf}) - {tipoCJ}"; retorno.AtribuiicoesCjTurma.AddRange( professor.Select(t => { var titular = lstProfTitulares.FirstOrDefault(p => p.TurmaCodigo == t.Turma.Codigo && p.ComponenteCurricularId == t.ComponenteCurricularId.ToString()); var retorno = new AtribuicaoCjTurmaDto() { CodigoDre = t.DreId, CodigoUe = t.UeId, ComponenteCurricular = t.ComponenteCurricularNome, DataAtribuicao = t.CriadoEm.ToString("dd/MM/yyyy"), NomeProfessorTitular = titular != null ? titular.ProfessorNomeRf : string.Empty, NomeTurma = t.Turma.Nome, Aulas = exibirAulas ? ObterAulasDadas(t.ProfessorRf, t.Turma.Codigo, t.ComponenteCurricularId, aulas)?.ToList() : null }; return(retorno); })); return(retorno); })); } else { var agrupamento = lstAtribuicaoCJ.GroupBy(cj => new { cj.Turma.Codigo, Nome = cj.Turma.NomePorFiltroModalidade(filtroModalidade) }); relatorio.AtribuicoesCjPorTurma.AddRange( agrupamento.Select(turma => { var retorno = new AtribuicaoCjPorTurmaDto(); retorno.NomeTurma = turma.Key.Nome; retorno.AtribuicoesCjProfessor.AddRange( turma.Select(t => { var titular = lstProfTitulares.FirstOrDefault(p => p.TurmaCodigo == t.Turma.Codigo && p.ComponenteCurricularId == t.ComponenteCurricularId.ToString()); var professorNome = cargosServidores.FirstOrDefault(p => p.CodigoRF == t.ProfessorRf)?.NomeRelatorio; var retorno = new AtribuicaoCjProfessorDto() { CodigoDre = t.DreId, CodigoUe = t.UeId, ComponenteCurricular = t.ComponenteCurricularNome, DataAtribuicao = t.CriadoEm.ToString("dd/MM/yyyy"), NomeProfessorTitular = titular != null ? titular.ProfessorNomeRf : string.Empty, NomeProfessorCj = !string.IsNullOrEmpty(t.ProfessorNome) ? t.ProfessorNomeRf : professorNome, TipoProfessorCj = ObterTipoProfessorCJ(t.ProfessorRf, lstAtribuicaoEsporadica, lstProfServidorTitulares, cargosServidores), Aulas = exibirAulas ? ObterAulasDadas(t.ProfessorRf, t.Turma.Codigo, t.ComponenteCurricularId, aulas)?.ToList() : null }; return(retorno); })); return(retorno); })); } }