Esempio n. 1
0
        public async Task <Curriculo> Atualizar(Curriculo entidade)
        {
            try
            {
                var disciplinasRemover = await _contexto.CurriculoDisciplina
                                         .AsNoTracking()
                                         .Where(lnq => lnq.CodigoCurriculo == entidade.Codigo)
                                         .ToListAsync();

                _contexto.CurriculoDisciplina.RemoveRange(disciplinasRemover);
                await _contexto.SaveChangesAsync();

                foreach (var disciplina in entidade.Disciplinas)
                {
                    var preRequisitos = disciplina.CurriculoDisciplinaPreRequisito;

                    var disciplinaAdicionar = new CurriculoDisciplina
                    {
                        AulasSemanaisPratica = disciplina.AulasSemanaisPratica,
                        AulasSemanaisTeorica = disciplina.AulasSemanaisTeorica,
                        CodigoCurriculo      = entidade.Codigo,
                        CodigoDisciplina     = disciplina.CodigoDisciplina,
                        Periodo = disciplina.Periodo,
                        Credito = disciplina.Credito
                    };

                    _contexto.CurriculoDisciplina.Add(disciplinaAdicionar);
                    _contexto.SaveChanges();

                    foreach (var preRequisito in preRequisitos)
                    {
                        preRequisito.CodigoDisciplina          = preRequisito.CodigoDisciplina;
                        preRequisito.CodigoCurriculoDisciplina = disciplinaAdicionar.Codigo;
                        _contexto.CurriculoDisciplinaPreRequisito.Add(preRequisito);
                        _contexto.SaveChanges();
                    }
                    ;
                }

                var curriculoAtualizar = await _contexto.Curriculo.FirstOrDefaultAsync(lnq => lnq.Codigo == entidade.Codigo);

                curriculoAtualizar.Ano         = entidade.Ano;
                curriculoAtualizar.CodigoCurso = entidade.CodigoCurso;
                curriculoAtualizar.Disciplinas = curriculoAtualizar.Disciplinas.OrderBy(lnq => lnq.Periodo).ToList();

                await _contexto.SaveChangesAsync();

                return(curriculoAtualizar);
            }
            catch (Exception e)
            {
                throw e;
            }
        }