コード例 #1
0
        public List <SalaDeAulaDto> ListarSalaDeAulaPorFiltros(ConceitoDto conceitoDto, DisciplinaDto disciplinaDto, PessoaDto pessoaDto, TurmaDto turmaDto)
        {
            var graphClient = ConexaoGrafo.GetConnection();

            Nullable <int> valorNulo = null;

            List <SalaDeAulaDto> list = graphClient.Cypher.Match("(salaDeAula:SalaDeAula), (pessoa:Pessoa) , (conceito:Conceito)")
                                        .Where(" pessoa.Id = salaDeAula.PessoaId and salaDeAula.Nota > conceito.Minimo and salaDeAula.Nota <= conceito.Maximo")
                                        .With(" salaDeAula,{ PessoaId: pessoa.Id, PessoaNome: pessoa.Nome} as Pessoas, conceito")
                                        .With(" conceito,{ Id: salaDeAula.Id, Semestre: salaDeAula.Semestre, DisciplinaId: salaDeAula.DisciplinaId,Nota: salaDeAula.Nota,TurmaId: salaDeAula.TurmaId, PessoaId: Pessoas.PessoaId, PessoaNome: Pessoas.PessoaNome} as salaDeAula")
                                        .Where <SalaDeAulaDto>(salaDeAula => salaDeAula.TurmaId == turmaDto.Id)

                                        .AndWhere(" salaDeAula.DisciplinaId = coalesce({disciplinaId},salaDeAula.DisciplinaId)  ")
                                        .WithParam("disciplinaId", disciplinaDto == null ? valorNulo : disciplinaDto.Id)

                                        .AndWhere(" salaDeAula.PessoaId = coalesce({pessoaId},salaDeAula.PessoaId)  ")
                                        .WithParam("pessoaId", pessoaDto == null ? valorNulo : pessoaDto.Id)

                                        .AndWhere(" conceito.Id = coalesce({conceitoId},conceito.Id)  ")
                                        .WithParam("conceitoId", conceitoDto == null ? valorNulo : conceitoDto.Id)

                                        .Return(salaDeAula => salaDeAula.As <SalaDeAulaDto>())
                                        .Results
                                        .ToList();

            graphClient.Dispose();
            return(list);
        }
コード例 #2
0
        private async Task <IEnumerable <FechamentoAluno> > AtualizaSinteseAlunos(long fechamentoTurmaDisciplinaId, DateTime dataReferencia, DisciplinaDto disciplina)
        {
            var fechamentoAlunos = await repositorioFechamentoAluno.ObterPorFechamentoTurmaDisciplina(fechamentoTurmaDisciplinaId);

            foreach (var fechamentoAluno in fechamentoAlunos)
            {
                foreach (var fechamentoNota in fechamentoAluno.FechamentoNotas)
                {
                    var frequencia = consultasFrequencia.ObterPorAlunoDisciplinaData(fechamentoAluno.AlunoCodigo, fechamentoNota.DisciplinaId.ToString(), dataReferencia);
                    var sinteseDto = consultasFrequencia.ObterSinteseAluno(frequencia.PercentualFrequencia, disciplina);

                    fechamentoNota.SinteseId = (long)sinteseDto.Id;
                }
            }

            return(fechamentoAlunos);
        }
コード例 #3
0
        public ActionResult Cadastrar()
        {
            var model = new DisciplinaDto();

            return(View(model));
        }
コード例 #4
0
        public async Task <AuditoriaPersistenciaDto> Salvar(long id, FechamentoTurmaDisciplinaDto entidadeDto, bool componenteSemNota = false)
        {
            notasEnvioWfAprovacao = new List <FechamentoNotaDto>();

            var fechamentoTurmaDisciplina = MapearParaEntidade(id, entidadeDto);

            await CarregarTurma(entidadeDto.TurmaId);

            // Valida periodo de fechamento
            var tipoCalendario = await repositorioTipoCalendario.BuscarPorAnoLetivoEModalidade(turmaFechamento.AnoLetivo
                                                                                               , turmaFechamento.ModalidadeCodigo == Modalidade.EJA?ModalidadeTipoCalendario.EJA : ModalidadeTipoCalendario.FundamentalMedio
                                                                                               , DateTime.Now.Semestre());

            var ue = turmaFechamento.Ue;

            PeriodoEscolar periodoEscolar = await ObterPeriodoEscolarFechamentoReabertura(tipoCalendario.Id, ue, entidadeDto.Bimestre);

            if (periodoEscolar == null)
            {
                throw new NegocioException($"Não localizado período de fechamento em aberto para turma informada no {entidadeDto.Bimestre}º Bimestre");
            }

            await CarregaFechamentoTurma(fechamentoTurmaDisciplina, turmaFechamento, periodoEscolar);

            var usuarioLogado = await servicoUsuario.ObterUsuarioLogado();

            // Valida Permissão do Professor na Turma/Disciplina
            await VerificaSeProfessorPodePersistirTurma(usuarioLogado.CodigoRf, entidadeDto.TurmaId, periodoEscolar.PeriodoFim);

            var fechamentoAlunos = Enumerable.Empty <FechamentoAluno>();

            DisciplinaDto disciplinaEOL = await consultasDisciplina.ObterDisciplina(fechamentoTurmaDisciplina.DisciplinaId);

            if (disciplinaEOL == null)
            {
                throw new NegocioException("Não foi possível localizar o componente curricular no EOL.");
            }

            // reprocessar do fechamento de componente sem nota deve atualizar a sintise de frequencia
            if (componenteSemNota && id > 0)
            {
                fechamentoAlunos = await AtualizaSinteseAlunos(id, periodoEscolar.PeriodoFim, disciplinaEOL);
            }
            else
            {
                // Carrega notas alunos
                fechamentoAlunos = await CarregarFechamentoAlunoENota(id, entidadeDto.NotaConceitoAlunos);
            }

            var alunos = await servicoEOL.ObterAlunosPorTurma(turmaFechamento.CodigoTurma);

            var parametroDiasAlteracao = await repositorioParametrosSistema.ObterValorPorTipoEAno(TipoParametroSistema.QuantidadeDiasAlteracaoNotaFinal, turmaFechamento.AnoLetivo);

            var diasAlteracao = DateTime.Today.DayOfYear - fechamentoTurmaDisciplina.CriadoEm.Date.DayOfYear;
            var acimaDiasPermitidosAlteracao = parametroDiasAlteracao != null && diasAlteracao > int.Parse(parametroDiasAlteracao);
            var alunosComNotaAlterada        = "";

            unitOfWork.IniciarTransacao();
            try
            {
                var fechamentoTurmaId = await repositorioFechamentoTurma.SalvarAsync(fechamentoTurmaDisciplina.FechamentoTurma);

                fechamentoTurmaDisciplina.FechamentoTurmaId = fechamentoTurmaId;

                await repositorioFechamentoTurmaDisciplina.SalvarAsync(fechamentoTurmaDisciplina);

                foreach (var fechamentoAluno in fechamentoAlunos)
                {
                    fechamentoAluno.FechamentoTurmaDisciplinaId = fechamentoTurmaDisciplina.Id;
                    await repositorioFechamentoAluno.SalvarAsync(fechamentoAluno);

                    foreach (var fechamentoNota in fechamentoAluno.FechamentoNotas)
                    {
                        fechamentoNota.FechamentoAlunoId = fechamentoAluno.Id;
                        await repositorioFechamentoNota.SalvarAsync(fechamentoNota);
                    }

                    if (!componenteSemNota)
                    {
                        var notaAlunoAlterada = entidadeDto.NotaConceitoAlunos.FirstOrDefault(n => n.CodigoAluno.Equals(fechamentoAluno.AlunoCodigo));
                        if (id > 0 && acimaDiasPermitidosAlteracao && notaAlunoAlterada != null && !alunosComNotaAlterada.Contains(fechamentoAluno.AlunoCodigo))
                        {
                            var aluno = alunos.FirstOrDefault(a => a.CodigoAluno == fechamentoAluno.AlunoCodigo);
                            alunosComNotaAlterada += $"<li>{aluno.CodigoAluno} - {aluno.NomeAluno}</li>";
                        }
                    }
                }

                await EnviarNotasWfAprovacao(fechamentoTurmaDisciplina.Id, fechamentoTurmaDisciplina.FechamentoTurma.PeriodoEscolar, usuarioLogado);

                unitOfWork.PersistirTransacao();

                if (alunosComNotaAlterada.Length > 0)
                {
                    Cliente.Executar <IServicoFechamentoTurmaDisciplina>(s => s.GerarNotificacaoAlteracaoLimiteDias(turmaFechamento, usuarioLogado, ue, entidadeDto.Bimestre, alunosComNotaAlterada));
                }

                Cliente.Executar <IServicoFechamentoTurmaDisciplina>(c => c.GerarPendenciasFechamento(fechamentoTurmaDisciplina.DisciplinaId, turmaFechamento, periodoEscolar, fechamentoTurmaDisciplina, usuarioLogado, componenteSemNota, disciplinaEOL.RegistraFrequencia));

                await mediator.Send(new PublicaFilaExcluirPendenciaAusenciaFechamentoCommand(fechamentoTurmaDisciplina.DisciplinaId, periodoEscolar.Id, turmaFechamento.Id, usuarioLogado));

                return((AuditoriaPersistenciaDto)fechamentoTurmaDisciplina);
            }
            catch (Exception e)
            {
                unitOfWork.Rollback();
                throw e;
            }
        }
コード例 #5
0
 public void DeletarDisciplina(DisciplinaDto disciplina)
 {
     negocio.DeletarDisciplina(disciplina);
 }
コード例 #6
0
 public void SalvarDisciplina(DisciplinaDto disciplina)
 {
     negocio.SalvarDisciplina(disciplina);
 }
コード例 #7
0
 public List <SalaDeAulaDto> ListarSalaDeAulaPorFiltros(ConceitoDto conceito, DisciplinaDto disciplina, PessoaDto pessoa, TurmaDto turma)
 {
     return(negocio.ListarSalaDeAulaPorFiltros(conceito, disciplina, pessoa, turma));
 }
コード例 #8
0
 public List <SalaDeAulaDto> ListarSalaDeAulaPorDisciplina(DisciplinaDto disciplina)
 {
     return(negocio.ListarSalaDeAulaPorDisciplina(disciplina));
 }