public JsonResult EnviarNotaFalta(int idMatricula, int idAluno, int idTurma, int idModulo, string campo, string valor) { try { Repositorio<NotaFalta> dbNT = new Repositorio<NotaFalta>(); NotaFalta notaFalta = dbNT.FindOne(x => x.idAluno == idAluno && x.idTurma == idTurma && x.idModulo == idModulo); NotaFalta nt; if (notaFalta == null) { nt = new NotaFalta(); nt.idAluno = idAluno; nt.idTurma = idTurma; nt.idModulo = idModulo; nt.nota1 = null; nt.nota2 = null; nt.qtdFalta = 0; nt.notaFinal = null; } else { nt = notaFalta; } switch (campo) { case "Nota1": nt.nota1 = !string.IsNullOrEmpty(valor) ? Convert.ToDecimal(valor.Replace(".",",")) : (decimal?)null; nt.notaFinal = nt.nota1; break; case "Nota2": nt.nota2 = !string.IsNullOrEmpty(valor) ? Convert.ToDecimal(valor.Replace(".",",")) : (decimal?)null; break; case "Faltas": nt.qtdFalta = Convert.ToInt32(valor); break; } if (notaFalta == null) { dbNT.Adicionar(nt); } else { dbNT.Atualizar(nt); } dbNT.SaveChanges(); //Verifica a situação do aluno var ntFalta = verificaSituacao(idMatricula, idAluno, idTurma, idModulo); return Json(new { notaFalta = ntFalta, success = true }, JsonRequestBehavior.AllowGet); } catch (Exception e) { return Json(new { success = false, message = e.Message }, JsonRequestBehavior.AllowGet); } }
public JsonResult EnviarNotaFalta(int idMatricula, int idAluno, int idTurma, int idModulo, string campo, string valor) { try { Repositorio <NotaFalta> dbNT = new Repositorio <NotaFalta>(); NotaFalta notaFalta = dbNT.FindOne(x => x.idAluno == idAluno && x.idTurma == idTurma && x.idModulo == idModulo); NotaFalta nt; if (notaFalta == null) { nt = new NotaFalta(); nt.idAluno = idAluno; nt.idTurma = idTurma; nt.idModulo = idModulo; nt.nota1 = null; nt.nota2 = null; nt.qtdFalta = 0; nt.notaFinal = null; } else { nt = notaFalta; } switch (campo) { case "Nota1": nt.nota1 = !string.IsNullOrEmpty(valor) ? Convert.ToDecimal(valor.Replace(".", ",")) : (decimal?)null; nt.notaFinal = nt.nota1; break; case "Nota2": nt.nota2 = !string.IsNullOrEmpty(valor) ? Convert.ToDecimal(valor.Replace(".", ",")) : (decimal?)null; break; case "Faltas": nt.qtdFalta = Convert.ToInt32(valor); break; } if (notaFalta == null) { dbNT.Adicionar(nt); } else { dbNT.Atualizar(nt); } dbNT.SaveChanges(); //Verifica a situação do aluno var ntFalta = verificaSituacao(idMatricula, idAluno, idTurma, idModulo); return(Json(new { notaFalta = ntFalta, success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { return(Json(new { success = false, message = e.Message }, JsonRequestBehavior.AllowGet)); } }
//Implementação das regras de negocio private NotaFalta verificaSituacao(int idMatricula, int idAluno, int idTurma, int idModulo) { NotaFalta nt = dbNotaFalta.FindOne(x => x.idAluno == idAluno && x.idTurma == idTurma && x.idModulo == idModulo); if (nt.nota1 != null && nt.qtdFalta != null) { Turma t = dbTurma.FindOne(x => x.idTurma == idTurma); Modulo m = dbModulo.FindOne(x => x.idModulo == idModulo); decimal percFaltas = (decimal)((nt.qtdFalta * 100) / m.tempoDuracao); if (nt.nota1 >= 7 && percFaltas <= 25) { //Aprovado atualizaSituacaoAluno(idAluno, idTurma, idModulo, EnumStatus.Aprovado); nt.situacaoAluno = (int)EnumStatus.Aprovado; } else if (nt.nota1 >= 2 && nt.nota1 < 7 && percFaltas <= 25) { if (((nt.nota2 / 2) + nt.nota1) >= 7) { //Aprovado após recuperação atualizaSituacaoAluno(idAluno, idTurma, idModulo, EnumStatus.Aprovado); nt.situacaoAluno = (int)EnumStatus.Aprovado; if (nt.nota2 > 0) { nt.notaFinal = 7; dbNotaFalta.Atualizar(nt); dbNotaFalta.SaveChanges(); } } else if (nt.nota2 != null && ((nt.nota2 / 2) + nt.nota1) < 7) { //Aprovado após recuperação atualizaSituacaoAluno(idAluno, idTurma, idModulo, EnumStatus.Reprovado); nt.situacaoAluno = (int)EnumStatus.Reprovado; } else { //Recuperacao atualizaSituacaoAluno(idAluno, idTurma, idModulo, EnumStatus.Recuperacao); nt.situacaoAluno = (int)EnumStatus.Recuperacao; } } else if (nt.nota1 < 2 || percFaltas > 25) { //Reprovado atualizaSituacaoAluno(idAluno, idTurma, idModulo, EnumStatus.Reprovado); nt.situacaoAluno = (int)EnumStatus.Reprovado; } //Calcula média final int qtdModulos = dbModulo.FindAll(x => x.idCurso == t.idCurso).Count; int qtdModulosCursados = dbNotaFalta.FindAll(x => x.idTurma == idTurma && x.idAluno == idAluno && x.nota1 != null).Count; if (qtdModulos == qtdModulosCursados) { List <NotaFalta> lstNotaFalta = dbNotaFalta.FindAll(x => x.idTurma == idTurma && x.idAluno == idAluno); int modulosAprovados = lstNotaFalta.Where(x => x.situacaoAluno == (int)EnumStatus.Aprovado).Count(); var notaFinal = lstNotaFalta.Average(x => x.notaFinal); if (modulosAprovados == qtdModulosCursados) { //Aprovado no curso atualizaSituacaoFinalAluno(idMatricula, idTurma, EnumStatus.Aprovado, notaFinal.Value); } else { //Reprovado no curso atualizaSituacaoFinalAluno(idMatricula, idTurma, EnumStatus.Reprovado, notaFinal.Value); } } } return(nt); }