public ActionResult Edit(AlunoVM alunoRecebido, string codTurma) { var query = ObterListaTurmas().Where(t => t.Codigo.Equals(codTurma)).ToList(); if (query.Count == 0) { return(HttpNotFound()); } Turma turmaRecebida = query.First(); Aluno novoAluno = alunoRecebido.ToAluno(turmaRecebida); ModelState["Turma"].Errors.Clear(); bool matriculaExistente = ObterListaAlunos() .FirstOrDefault(a => a.Matricula.Equals(novoAluno.Matricula, StringComparison.InvariantCultureIgnoreCase) && !a.Id.Equals(novoAluno.Id)) != null; if (matriculaExistente) { ModelState.AddModelError("Matricula", "Já existe um aluno com essa matricula"); } novoAluno.AnoApresentacao = alunoRecebido.AnoApresentacao; ModelState["AnoApresentacao"].Errors.Clear(); novoAluno.MesApresentacao = alunoRecebido.MesApresentacao; ModelState["MesApresentacao"].Errors.Clear(); Aluno alunoSalvo = ObterListaAlunos() .Where(a => a.Id == novoAluno.Id) .FirstOrDefault(); if (ObterPrevisaoInicialApresentacao(alunoSalvo)[0] > alunoRecebido.AnoApresentacao) { ModelState.AddModelError("MesApresentacao", "Restauramos a combinação Ano/Semestre pois a inserida não representava uma data posterior a data de previsão padrao"); } else if (ObterPrevisaoInicialApresentacao(alunoSalvo)[0] == alunoRecebido.AnoApresentacao && ObterPrevisaoInicialApresentacao(alunoSalvo)[1] > alunoRecebido.MesApresentacao) { ModelState.AddModelError("MesApresentacao", "Restauramos a combinação Ano/Semestre pois a inserida não representava uma data posterior a data de previsão padrao"); } if (ModelState.IsValid) { bool podeEditar = ObterListaAlunos().Where(a => a.Id == alunoSalvo.Id).FirstOrDefault() != null; if (!podeEditar) { return(RedirectToAction("Unauthorized", "Erro")); } _alunoRepository.Update(alunoSalvo, novoAluno, query.First()); return(RedirectToAction("Index")); } ViewBag.DataAntiga = new int[] { alunoSalvo.AnoApresentacao, alunoSalvo.MesApresentacao }; ViewBag.turmas = ObterListaTurmas() .ToTurmaVM(); novoAluno.AnoApresentacao = alunoSalvo.AnoApresentacao; novoAluno.MesApresentacao = novoAluno.MesApresentacao; return(View(novoAluno.ToAlunoVM())); }
public ActionResult Add(AlunoVM alunoRecebido, string codTurma) { var query = ObterListaTurmas().Where(t => t.Codigo.Equals(codTurma)).ToList(); if (query.Count == 0) { return(HttpNotFound()); } Turma turmaRecebida = query.First(); Aluno novoAluno = alunoRecebido.ToAluno(turmaRecebida); ModelState["Turma"].Errors.Clear(); bool matriculaExistente = ObterListaAlunos() .FirstOrDefault(a => a.Matricula.Equals(novoAluno.Matricula, StringComparison.InvariantCultureIgnoreCase) && !a.Id.Equals(novoAluno.Id)) != null; if (matriculaExistente) { ModelState.AddModelError("Matricula", "Já existe um aluno com essa matricula"); } ModelState["AnoApresentacao"].Errors.Clear(); novoAluno.AnoApresentacao = ObterPrevisaoInicialApresentacao(novoAluno)[0]; ModelState["MesApresentacao"].Errors.Clear(); novoAluno.MesApresentacao = ObterPrevisaoInicialApresentacao(novoAluno)[1]; if (ModelState.IsValid) { _alunoRepository.Persist(novoAluno); return(RedirectToAction("Index")); } ViewBag.turmas = ObterListaTurmas() .ToTurmaVM(); return(View(novoAluno.ToAlunoVM())); }