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); }