예제 #1
0
        public async Task VerificaPersistenciaGeral(Turma turma)
        {
            var tipoCalendario = await repositorioTipoCalendario.BuscarPorAnoLetivoEModalidade(turma.AnoLetivo, turma.ObterModalidadeTipoCalendario(), turma.Semestre);

            if (tipoCalendario == null)
            {
                throw new NegocioException("Não foi possível localizar o tipo de calendário.");
            }

            var diaAtual = DateTime.Today;

            var eventoFechamento = await repositorioEvento.EventosNosDiasETipo(diaAtual, diaAtual, TipoEvento.FechamentoBimestre, tipoCalendario.Id, turma.Ue.CodigoUe, turma.Ue.Dre.CodigoDre);

            if (eventoFechamento == null || !eventoFechamento.Any())
            {
                throw new NegocioException("Não foi possível localizar um fechamento de período ou reabertura para esta turma.");
            }

            var professorRf = servicoUsuario.ObterRf();
            var professorPodePersistirTurma = await servicoEOL.ProfessorPodePersistirTurma(professorRf, turma.CodigoTurma, diaAtual);

            if (!professorPodePersistirTurma)
            {
                throw new NegocioException("Você não pode executar alterações nesta turma.");
            }
        }
예제 #2
0
        public async Task<string> ModificarPerfil(Guid perfil)
        {
            string loginAtual = servicoUsuario.ObterLoginAtual();
            string codigoRfAtual = servicoUsuario.ObterRf();

            await servicoUsuario.PodeModificarPerfil(perfil, loginAtual);

            var permissionamentos = await servicoEOL.ObterPermissoesPorPerfil(perfil);

            if (permissionamentos == null || !permissionamentos.Any())
            {
                throw new NegocioException($"Não foi possível obter os permissionamentos do perfil selecionado");
            }
            else
            {
                var listaPermissoes = permissionamentos
                    .Distinct()
                    .Select(a => (Permissao)a)
                    .ToList();

                await servicoAbrangencia.Salvar(loginAtual, perfil, false);

                return servicoTokenJwt.GerarToken(loginAtual, codigoRfAtual, perfil, listaPermissoes);
            }
        }
        public async Task Salvar(NotaConceitoListaDto notaConceitoLista)
        {
            var notasConceitosDto = notaConceitoLista.NotasConceitos;

            var alunos = notasConceitosDto.Select(x => x.AlunoId).ToList();

            var avaliacoes = notasConceitosDto.Select(x => x.AtividadeAvaliativaId).ToList();

            var notasBanco = repositorioNotasConceitos.ObterNotasPorAlunosAtividadesAvaliativas(avaliacoes, alunos, notaConceitoLista.DisciplinaId);

            var professorRf = servicoUsuario.ObterRf();

            if (notasBanco == null || !notasBanco.Any())
            {
                await IncluirTodasNotas(notasConceitosDto, professorRf, notaConceitoLista.TurmaId, notaConceitoLista.DisciplinaId);
            }
            else
            {
                await TratarInclusaoEdicaoNotas(notasConceitosDto, notasBanco, professorRf, notaConceitoLista.TurmaId, notaConceitoLista.DisciplinaId);
            }


            var atividadeAvaliativa = await repositorioAtividadeAvaliativa.ObterPorIdAsync(notasConceitosDto.Select(x => x.AtividadeAvaliativaId).FirstOrDefault());

            var aula = await mediator.Send(new ObterAulaPorComponenteCurricularIdTurmaIdEDataQuery(notaConceitoLista.DisciplinaId, notaConceitoLista.TurmaId, atividadeAvaliativa.DataAvaliacao));

            if (aula != null)
            {
                await mediator.Send(new ExcluirPendenciaAulaCommand(aula.Id, TipoPendencia.Avaliacao));
            }
        }
예제 #4
0
        public async Task <TrocaPerfilDto> ModificarPerfil(Guid perfil)
        {
            string loginAtual     = servicoUsuario.ObterLoginAtual();
            string codigoRfAtual  = servicoUsuario.ObterRf();
            string nomeLoginAtual = servicoUsuario.ObterNomeLoginAtual();

            await servicoUsuario.PodeModificarPerfil(perfil, loginAtual);

            var permissionamentos = await servicoEOL.ObterPermissoesPorPerfil(perfil);

            if (permissionamentos == null || !permissionamentos.Any())
            {
                throw new NegocioException($"Não foi possível obter os permissionamentos do perfil selecionado");
            }
            else
            {
                var listaPermissoes = permissionamentos
                                      .Distinct()
                                      .Select(a => (Permissao)a)
                                      .ToList();

                await servicoAbrangencia.Salvar(loginAtual, perfil, false);

                var usuario = await servicoUsuario.ObterUsuarioLogado();

                usuario.DefinirPerfilAtual(perfil);

                //await servicoTokenJwt.RevogarToken(loginAtual);
                var tokenStr = servicoTokenJwt.GerarToken(loginAtual, nomeLoginAtual, codigoRfAtual, perfil, listaPermissoes);

                return(new TrocaPerfilDto
                {
                    Token = tokenStr,
                    DataHoraExpiracao = servicoTokenJwt.ObterDataHoraExpiracao(),
                    EhProfessor = usuario.EhProfessor(),
                    EhProfessorCj = usuario.EhProfessorCj(),
                    EhProfessorPoa = usuario.EhProfessorPoa(),
                    EhProfessorInfantil = usuario.EhProfessorInfantil(),
                    EhProfessorCjInfantil = usuario.EhProfessorCjInfantil(),
                    EhPerfilProfessor = usuario.EhPerfilProfessor()
                });
            }
        }
예제 #5
0
        public async Task <IEnumerable <TurmaParaCopiaPlanoAnualDto> > ObterTurmasParaCopia(int turmaId, long componenteCurricular, bool consideraHistorico)
        {
            var codigoRfUsuarioLogado = servicoUsuario.ObterRf();
            var turmasEOL             = await servicoEOL.ObterTurmasParaCopiaPlanoAnual(codigoRfUsuarioLogado, componenteCurricular, turmaId);

            if (turmasEOL != null && turmasEOL.Any())
            {
                var idsTurmas = turmasEOL.Select(c => c.TurmaId.ToString());
                turmasEOL = await mediator.Send(new ValidaSeTurmasPossuemPlanoAnualQuery(idsTurmas.ToArray(), consideraHistorico));
            }
            return(turmasEOL);
        }
예제 #6
0
        public async Task <AuditoriaFechamentoTurmaDto> Salvar(long id, FechamentoTurmaDisciplinaDto entidadeDto)
        {
            var fechamentoTurma = MapearParaEntidade(id, entidadeDto);

            // Valida periodo de fechamento
            var tipoCalendario = repositorioTipoCalendario.BuscarPorAnoLetivoEModalidade(fechamentoTurma.Turma.AnoLetivo
                                                                                         , fechamentoTurma.Turma.ModalidadeCodigo == Modalidade.EJA ? ModalidadeTipoCalendario.EJA : ModalidadeTipoCalendario.FundamentalMedio
                                                                                         , DateTime.Now.Month > 6 ? 2 : 1);

            var ue                 = repositorioUe.ObterPorId(fechamentoTurma.Turma.UeId);
            var fechamento         = repositorioFechamento.ObterPorTipoCalendarioDreEUE(tipoCalendario.Id, ue.DreId, ue.Id);
            var fechamentoBimestre = fechamento?.FechamentosBimestre.FirstOrDefault(x => x.PeriodoEscolar.Bimestre == entidadeDto.Bimestre);

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

            // Valida Permissão do Professor na Turma/Disciplina
            VerificaSeProfessorPodePersistirTurma(servicoUsuario.ObterRf(), entidadeDto.TurmaId, fechamentoBimestre.PeriodoEscolar.PeriodoFim);

            fechamentoTurma.PeriodoFechamentoBimestreId = fechamentoBimestre.Id;

            // Carrega notas alunos
            var notasConceitosBimestre = await MapearParaEntidade(id, entidadeDto.NotaConceitoAlunos);

            unitOfWork.IniciarTransacao();
            try
            {
                await repositorioFechamentoTurmaDisciplina.SalvarAsync(fechamentoTurma);

                foreach (var notaBimestre in notasConceitosBimestre)
                {
                    notaBimestre.FechamentoTurmaDisciplinaId = fechamentoTurma.Id;
                    repositorioNotaConceitoBimestre.Salvar(notaBimestre);
                }
                unitOfWork.PersistirTransacao();

                return((AuditoriaFechamentoTurmaDto)fechamentoTurma);
            }
            catch (Exception e)
            {
                unitOfWork.Rollback();
                throw e;
            }
        }
예제 #7
0
        public async Task <IEnumerable <TurmaRetornoDto> > ObterTurmasParaCopia(string turmaOrigemId)
        {
            var professorRf = servicoUsuario.ObterRf();
            var turmaOrigem = await repositorioTurma.ObterPorCodigo(turmaOrigemId);

            var ue     = consultasUe.ObterPorId(turmaOrigem.UeId);
            var turmas = servicoEOL.ObterListaTurmasPorProfessor(professorRf);

            return(turmas.Where(t => t.CodTurma.ToString() != turmaOrigem.CodigoTurma &&
                                t.CodEscola == ue.CodigoUe &&
                                t.AnoLetivo == turmaOrigem.AnoLetivo &&
                                t.Ano == turmaOrigem.Ano)
                   .Select(t => new TurmaRetornoDto()
            {
                Codigo = t.CodTurma.ToString(),
                Nome = t.NomeTurma
            }));
        }
예제 #8
0
        public async Task Salvar(NotaConceitoListaDto notaConceitoLista)
        {
            var notasConceitosDto = notaConceitoLista.NotasConceitos;

            var alunos = notasConceitosDto.Select(x => x.AlunoId).ToList();

            var avaliacoes = notasConceitosDto.Select(x => x.AtividadeAvaliativaId).ToList();

            var notasBanco = repositorioNotasConceitos.ObterNotasPorAlunosAtividadesAvaliativas(avaliacoes, alunos, notaConceitoLista.DisciplinaId);

            var professorRf = servicoUsuario.ObterRf();

            var notasSalvar = new List <NotaConceito>();

            if (notasBanco == null || !notasBanco.Any())
            {
                await IncluirTodasNotas(notasConceitosDto, notasSalvar, professorRf, notaConceitoLista.TurmaId, notaConceitoLista.DisciplinaId);
            }
            else
            {
                await TratarInclusaoEdicaoNotas(notasConceitosDto, notasBanco, notasSalvar, professorRf, notaConceitoLista.TurmaId, notaConceitoLista.DisciplinaId);
            }
        }