public async Task <int> Do_CalificarDesafio(int estId, int idCurso, int idDesafio, string idProj) { var model = await _data.Find_RegistroCalificacion( idCurso, estId, idDesafio); try { if (model == null || !model.Iniciada) { return(-1); } var cal = model.CalificacionPendiente; var res = await _evaluator.Get_Evaluation(idProj); var est = await _data.Find_Estudiante(estId); var curso = await _data.Find_Curso(idCurso); var resultados = res.Select(val => val.Map(cal.Id)) .ToList(); _data.Do_TerminarCalificacion(curso, est, cal, resultados, idProj); await _data.SaveAllAsync(); return(cal.Id); } catch (EvaluationException) { throw new ApplicationServicesException( "Id de desafío inválido"); } }
public async Task <ApiResult <CalificacionInfoViewModel> > Do_CalificarDesafio(int estId, int idCurso, int idDesafio, int idCalificacion, string idProj) { var model = await _data.Find_Calificacion(idCalificacion, estId, idCurso, idDesafio); try { if (model == null) { throw new ApiNotFoundException(); } if (model.Tiempoinicio == null) { throw new ApiBadRequestException("Debes iniciar el desafío primero"); } if (model.TiempoFinal != null) { throw new ApiBadRequestException("El desafío ya ha terminado"); } var res = await _evaluator.Get_Evaluation(idProj); var est = await _data.Find_Estudiante(estId); var curso = await _data.Find_Curso(idCurso); var desafio = await _data.FindPure_Desafio(idDesafio); var resultados = res.Select(val => val.Map(model.Id)) .ToList(); model.Puntuacion = _calificacionDesafioService.GetCalificacionDesafio( desafio.TipoEvaluacion, desafio.Param1, desafio.Param2, desafio.Param3, desafio.Param4, res); _data.Do_TerminarCalificacion(curso, est, model, resultados, idProj); var relEstudianteCurso = await _data.Find_Rel_CursoEstudiantes(idCurso, estId); relEstudianteCurso.SiguienteDesafioId = await GetNextChallenge(idCurso, estId, idDesafio); _data.Edit(relEstudianteCurso); var success = await _data.SaveAllAsync(); return(ApiResult <CalificacionInfoViewModel> .Initialize(model.ToViewModel(), success)); } catch (EvaluationException) { throw new ApiBadRequestException("Id de desafío inválido"); } }
public async Task <IActionResult> Evaluacion(string idProyecto) { if (!string.IsNullOrWhiteSpace(idProyecto)) { try { var model = (await _evaluator .Get_Evaluation(idProyecto)) .Select(val => val.Map()); return(View(new ResultadosScratchViewModel(model))); } catch (EvaluationException) { ModelState.AddModelError("idProyecto", "Id inváido."); return(View("Index")); } } return(RedirectToAction("Index")); }