コード例 #1
0
        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");
            }
        }
コード例 #2
0
        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");
            }
        }
コード例 #3
0
 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"));
 }