Exemplo n.º 1
0
        private async Task TratarAbrangencia(AtribuicaoCJ atribuicaoCJ, IEnumerable <AtribuicaoCJ> atribuicoesAtuais)
        {
            var abrangenciasAtuais = await repositorioAbrangencia.ObterAbrangenciaSintetica(atribuicaoCJ.ProfessorRf, Perfis.PERFIL_CJ, atribuicaoCJ.TurmaId);

            if (atribuicaoCJ.Substituir)
            {
                if (abrangenciasAtuais != null && !abrangenciasAtuais.Any())
                {
                    var turma = repositorioTurma.ObterPorId(atribuicaoCJ.TurmaId);
                    if (turma == null)
                    {
                        throw new NegocioException($"Não foi possível localizar a turma {atribuicaoCJ.TurmaId} da abrangência.");
                    }

                    var abrangencias = new Abrangencia[] { new Abrangencia()
                                                           {
                                                               Perfil = Perfis.PERFIL_CJ, TurmaId = turma.Id
                                                           } };

                    servicoAbrangencia.SalvarAbrangencias(abrangencias, atribuicaoCJ.ProfessorRf);
                }
            }
            else
            {
                if (abrangenciasAtuais != null && abrangenciasAtuais.Any())
                {
                    if (!atribuicoesAtuais.Any(a => a.Id != atribuicaoCJ.Id && a.Substituir == true))
                    {
                        servicoAbrangencia.RemoverAbrangencias(abrangenciasAtuais.Select(a => a.Id).ToArray());
                    }
                }
            }
        }
Exemplo n.º 2
0
        private async Task TratarAbrangencia(AtribuicaoCJ atribuicaoCJ, IEnumerable <AtribuicaoCJ> atribuicoesAtuais)
        {
            var perfil = atribuicaoCJ.Modalidade == Modalidade.Infantil ? Perfis.PERFIL_CJ_INFANTIL : Perfis.PERFIL_CJ;

            var abrangenciasAtuais = await repositorioAbrangencia.ObterAbrangenciaSintetica(atribuicaoCJ.ProfessorRf, perfil, atribuicaoCJ.TurmaId);

            if (atribuicaoCJ.Substituir)
            {
                if (abrangenciasAtuais != null && !abrangenciasAtuais.Any())
                {
                    var turma = await repositorioTurma.ObterPorCodigo(atribuicaoCJ.TurmaId);

                    if (turma == null)
                    {
                        throw new NegocioException($"Não foi possível localizar a turma {atribuicaoCJ.TurmaId} da abrangência.");
                    }

                    var abrangencias = new Abrangencia[] { new Abrangencia()
                                                           {
                                                               Perfil = perfil, TurmaId = turma.Id
                                                           } };

                    servicoAbrangencia.SalvarAbrangencias(abrangencias, atribuicaoCJ.ProfessorRf);
                }
            }
            else if ((abrangenciasAtuais != null && abrangenciasAtuais.Any()) &&
                     (!atribuicoesAtuais.Any(a => a.Id != atribuicaoCJ.Id && a.Substituir)))
            {
                servicoAbrangencia.RemoverAbrangencias(abrangenciasAtuais.Select(a => a.Id).ToArray());
            }
        }
Exemplo n.º 3
0
        private async Task ValidaSeTemAulaCriada(AtribuicaoCJ atribuicaoCJ)
        {
            if (atribuicaoCJ.Id > 0 && !atribuicaoCJ.Substituir)
            {
                var aulas = await repositorioAula.ObterAulas(atribuicaoCJ.TurmaId, atribuicaoCJ.UeId, atribuicaoCJ.ProfessorRf, null, atribuicaoCJ.DisciplinaId.ToString());

                if (aulas != null && aulas.Any())
                {
                    throw new NegocioException($"Não é possível tirar a substituição da turma {atribuicaoCJ.TurmaId} para o componente curricular {atribuicaoCJ.DisciplinaId}");
                }
            }
        }
Exemplo n.º 4
0
 private void ValidaComponentesCurricularesQueNaoPodemSerSubstituidos(AtribuicaoCJ atribuicaoCJ)
 {
     if (componentesQueNaoPodemSerSubstituidos.Any(a => a == atribuicaoCJ.DisciplinaId))
     {
         var nomeComponenteCurricular = servicoEOL.ObterDisciplinasPorIds(new long[] { atribuicaoCJ.DisciplinaId });
         if (nomeComponenteCurricular != null && nomeComponenteCurricular.Any())
         {
             throw new NegocioException($"O componente curricular {nomeComponenteCurricular.FirstOrDefault().Nome} não pode ser substituido.");
         }
         else
         {
             throw new NegocioException($"Não foi possível localizar o nome do componente curricular de identificador {atribuicaoCJ.DisciplinaId} no EOL.");
         }
     }
 }
Exemplo n.º 5
0
        public async Task Salvar(AtribuicaoCJ atribuicaoCJ, IEnumerable <AtribuicaoCJ> atribuicoesAtuais = null)
        {
            var professorValidoNoEol = await servicoEOL.ValidarProfessor(atribuicaoCJ.ProfessorRf);

            if (!professorValidoNoEol)
            {
                throw new NegocioException("Este professor não é válido para ser CJ.");
            }

            ValidaComponentesCurricularesQueNaoPodemSerSubstituidos(atribuicaoCJ);

            if (atribuicoesAtuais == null)
            {
                atribuicoesAtuais = await repositorioAtribuicaoCJ.ObterPorFiltros(atribuicaoCJ.Modalidade, atribuicaoCJ.TurmaId,
                                                                                  atribuicaoCJ.UeId, 0, atribuicaoCJ.ProfessorRf, string.Empty, null);
            }

            var atribuicaoJaCadastrada = atribuicoesAtuais.FirstOrDefault(a => a.DisciplinaId == atribuicaoCJ.DisciplinaId);

            if (atribuicaoJaCadastrada == null)
            {
                if (!atribuicaoCJ.Substituir)
                {
                    return;
                }
            }
            else
            {
                if (atribuicaoCJ.Substituir == atribuicaoJaCadastrada.Substituir)
                {
                    return;
                }

                atribuicaoJaCadastrada.Substituir = atribuicaoCJ.Substituir;
                atribuicaoCJ = atribuicaoJaCadastrada;

                if (!atribuicaoCJ.Substituir)
                {
                    await ValidaSeTemAulaCriada(atribuicaoCJ);
                }
            }
            await ValidaSePerfilPodeIncluir();

            await repositorioAtribuicaoCJ.SalvarAsync(atribuicaoCJ);

            await TratarAbrangencia(atribuicaoCJ, atribuicoesAtuais);
        }
Exemplo n.º 6
0
        public async Task Salvar(AtribuicaoCJ atribuicaoCJ, IEnumerable <ProfessorTitularDisciplinaEol> professoresTitularesDisciplinasEol, IEnumerable <AtribuicaoCJ> atribuicoesAtuais = null)
        {
            ValidaComponentesCurricularesQueNaoPodemSerSubstituidos(atribuicaoCJ);

            if (professoresTitularesDisciplinasEol != null && professoresTitularesDisciplinasEol.Any(c => c.ProfessorRf.Contains(atribuicaoCJ.ProfessorRf) && c.DisciplinaId == atribuicaoCJ.DisciplinaId))
            {
                throw new NegocioException("Não é possível realizar substituição na turma onde o professor já é o titular.");
            }

            if (atribuicoesAtuais == null)
            {
                atribuicoesAtuais = await repositorioAtribuicaoCJ.ObterPorFiltros(atribuicaoCJ.Modalidade, atribuicaoCJ.TurmaId,
                                                                                  atribuicaoCJ.UeId, 0, atribuicaoCJ.ProfessorRf, string.Empty, null);
            }

            var atribuicaoJaCadastrada = atribuicoesAtuais.FirstOrDefault(a => a.DisciplinaId == atribuicaoCJ.DisciplinaId);

            if (atribuicaoJaCadastrada == null)
            {
                if (!atribuicaoCJ.Substituir)
                {
                    return;
                }
            }
            else
            {
                if (atribuicaoCJ.Substituir == atribuicaoJaCadastrada.Substituir)
                {
                    return;
                }

                atribuicaoJaCadastrada.Substituir = atribuicaoCJ.Substituir;
                atribuicaoCJ = atribuicaoJaCadastrada;

                if (!atribuicaoCJ.Substituir)
                {
                    await ValidaSeTemAulaCriada(atribuicaoCJ);
                }
            }
            await ValidaSePerfilPodeIncluir();

            await repositorioAtribuicaoCJ.SalvarAsync(atribuicaoCJ);

            await TratarAbrangencia(atribuicaoCJ, atribuicoesAtuais);
        }