예제 #1
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);
        }