public void calificar(CalificacionRequest notasDesarrollo) { var calificacion = _context.Calificaciones.SingleOrDefault(c => c.Id == notasDesarrollo.CalificacionId); var evaluacion = _context.Evaluaciones.SingleOrDefault(e => e.Id == calificacion.EvaluacionId); var estudiante = _context.Cuenta.SingleOrDefault(e => e.Id == calificacion.EstudianteId); var respuestasDesarrollo = _context.RespuestaDesarrollo.Where(i => i.EstudianteId == estudiante.Id && i.Desarrollo.EvaluacionId == calificacion.EvaluacionId).ToList(); int cantRespuestas = respuestasDesarrollo.Count; int respuestasCorrectas = 0; foreach (var respDesarrollo in respuestasDesarrollo) { var calDes = notasDesarrollo.CalificacionesDesarrollo; foreach (var nota in calDes) { if (nota.Nota > 0 && nota.Nota <= 100) { if (nota.DesarrolloId == respDesarrollo.DesarrolloId) { var d = _context.Desarrollo.SingleOrDefault(d => d.Id == nota.DesarrolloId); if (d != null) { respDesarrollo.Puntaje = nota.Nota; if (nota.Nota >= d.PuntajeAprobacion) { respuestasCorrectas++; } } } } else { throw (new Exception("Una nota no es mayor a 0 y menor o igual a 100")); } } } int[] retornovof = calificarVof(notasDesarrollo.CalificacionId); int cantidadTotalPreguntas = retornovof[1] + cantRespuestas; int cantidadCorrectas = retornovof[0] + respuestasCorrectas; int notaFinal = (cantidadCorrectas * 100) / cantidadTotalPreguntas; calificacion.FechaCorregida = DateTime.Now; if (notaFinal >= evaluacion.CalificacionAprobacion) { calificacion.EstadoCalificacion = "Aprobado"; } else { calificacion.EstadoCalificacion = "Reprobado"; } calificacion.Nota = notaFinal; _context.SaveChanges(); }
public IActionResult calificar(CalificacionRequest notasDesarrollo) { try{ _nodoFacultad.SeleccionarNodoFacultad(notasDesarrollo.Facultad); int idCalificacion = _evaluacion.ObtenerIdCalifacion(notasDesarrollo.EvaluacionId, notasDesarrollo.EstudianteId); notasDesarrollo.CalificacionId = idCalificacion; _evaluacion.calificar(notasDesarrollo); return(Ok(new { exito = "Se califico la evaluacion" })); } catch (Exception e) { return(BadRequest(new { error = "Algo salio mal", source = e.Source, message = e.Message, trace = e.StackTrace })); } }