private async Task <List <AulaTitularCJDataControleGradeDto> > ObterAulasTitularCJ(AulaPrevistaBimestreQuantidade aulasPrevistasComponente, long turmaId, long tipoCalendarioId, int bimestre) { var aulasTitular = await mediator.Send(new ObterAulaReduzidaPorTurmaComponenteEBimestreQuery(turmaId, tipoCalendarioId, aulasPrevistasComponente.ComponenteCurricularId, bimestre)); var aulasCJ = await mediator.Send(new ObterAulaReduzidaPorTurmaComponenteEBimestreQuery(turmaId, tipoCalendarioId, aulasPrevistasComponente.ComponenteCurricularId, bimestre, true)); var aulasTitularCJData = new List <AulaTitularCJDataControleGradeDto>(); var datas = aulasTitular.Select(a => a.Data); datas.Union(aulasCJ.Select(a => a.Data)); foreach (var data in datas.Distinct()) { if (aulasTitular.Where(a => a.Data == data).Any() && aulasCJ.Where(a => a.Data == data).Any()) { var aulaTitularCJData = new AulaTitularCJDataControleGradeDto() { Data = data.ToString("dd/MM/yyyy") }; var divergencias = new List <AulaTitularCJControleGradeDto>(); foreach (var aula in aulasTitular.Where(a => a.Data == data)) { divergencias.Add(new AulaTitularCJControleGradeDto() { QuantidadeAulas = aula.Quantidade, ProfessorTitular = $"{aula.Professor} ({aula.ProfessorRf})" }); } foreach (var aula in aulasCJ.Where(a => a.Data == data)) { divergencias.Add(new AulaTitularCJControleGradeDto() { QuantidadeAulas = aula.Quantidade, ProfessorCJ = $"{aula.Professor} ({aula.ProfessorRf})" }); } aulaTitularCJData.Divergencias = divergencias; aulasTitularCJData.Add(aulaTitularCJData); } } return(aulasTitularCJData); }
private async Task <ComponenteCurricularControleGradeDto> MapearParaComponenteDto(AulaPrevistaBimestreQuantidade aulasPrevistasComponente, long turmaId, long tipoCalendarioId, Modalidade modalidadeTurma, int bimestre, DateTime dataInicio, DateTime dataFim) { var componenteDto = new ComponenteCurricularControleGradeDto(); componenteDto.Nome = aulasPrevistasComponente.ComponenteCurricularNome; componenteDto.AulasPrevistas = aulasPrevistasComponente.Previstas; componenteDto.AulasCriadasProfessorTitular = aulasPrevistasComponente.CriadasTitular; componenteDto.AulasCriadasProfessorSubstituto = aulasPrevistasComponente.CriadasCJ; componenteDto.AulasDadasProfessorTitular = aulasPrevistasComponente.CumpridasTitular; componenteDto.AulasDadasProfessorSubstituto = aulasPrevistasComponente.CumpridasCj; componenteDto.Repostas = aulasPrevistasComponente.Reposicoes; componenteDto.Divergencias = await VerificarDivergencias(turmaId, aulasPrevistasComponente.Bimestre, aulasPrevistasComponente.ComponenteCurricularId, aulasPrevistasComponente.Regencia, modalidadeTurma, componenteDto.AulasPrevistas != (aulasPrevistasComponente.CumpridasTitular + aulasPrevistasComponente.CumpridasCj), tipoCalendarioId, componenteDto.AulasPrevistas == 0) ? "Sim" : "Não"; var detalhamentoDivergencias = new DetalhamentoDivergenciasControleGradeSinteticoDto(); detalhamentoDivergencias.AulasNormaisExcedido = await mediator.Send(new ObterAulasNormaisExcedidasQuery(turmaId, tipoCalendarioId, aulasPrevistasComponente.ComponenteCurricularId, bimestre)); detalhamentoDivergencias.AulasTitularCJ = await ObterAulasTitularCJ(aulasPrevistasComponente, turmaId, tipoCalendarioId, bimestre); detalhamentoDivergencias.AulasDuplicadas = await mediator.Send(new DetalharAulasDuplicadasPorTurmaComponenteEBimestreQuery(turmaId, aulasPrevistasComponente.ComponenteCurricularId, tipoCalendarioId, aulasPrevistasComponente.Bimestre)); componenteDto.DetalhamentoDivergencias = detalhamentoDivergencias; componenteDto.VisaoSemanal = await ObterSessaoVisaoSemanal(dataInicio, dataFim, turmaId, aulasPrevistasComponente.ComponenteCurricularId, tipoCalendarioId); detalhamentoDivergencias.AulasDiasNaoLetivos = await ObterAulasDiasNaoLetivos(turmaId, tipoCalendarioId, aulasPrevistasComponente.ComponenteCurricularId, bimestre, dataInicio, dataFim); return(componenteDto); }
private async Task <ComponenteCurricularControleGradeDto> MapearParaComponenteDto(AulaPrevistaBimestreQuantidade aulasPrevistasComponente, long turmaId, long tipoCalendarioId, Modalidade modalidadeTurma) { var componenteDto = new ComponenteCurricularControleGradeDto(); componenteDto.Nome = aulasPrevistasComponente.ComponenteCurricularNome; componenteDto.AulasPrevistas = aulasPrevistasComponente.Previstas; componenteDto.AulasCriadasProfessorTitular = aulasPrevistasComponente.CriadasTitular; componenteDto.AulasCriadasProfessorSubstituto = aulasPrevistasComponente.CriadasCJ; componenteDto.AulasDadasProfessorTitular = aulasPrevistasComponente.CumpridasTitular; componenteDto.AulasDadasProfessorSubstituto = aulasPrevistasComponente.CumpridasCj; componenteDto.Repostas = aulasPrevistasComponente.Reposicoes; componenteDto.Divergencias = await VerificarDivergencias(turmaId, aulasPrevistasComponente.Bimestre, aulasPrevistasComponente.ComponenteCurricularId, aulasPrevistasComponente.Regencia, modalidadeTurma, componenteDto.AulasPrevistas != (aulasPrevistasComponente.CumpridasTitular + aulasPrevistasComponente.CumpridasCj), tipoCalendarioId, componenteDto.AulasPrevistas == 0) ? "Sim" : "Não"; return(componenteDto); }