public CalificacionEstudianteViewModel(RegistroCalificacion registro)
 {
     this.CursoId      = registro.CursoId;
     this.EstudianteId = registro.EstudianteId;
     this.DesafioId    = registro.DesafioId;
     this.Valorada     = registro.Valorada;
 }
예제 #2
0
        public async Task <CalificacionDesafioViewModel> Get_Desafio(
            int estId, int cursoId, int desafioId)
        {
            var curso = await _data.Find_Curso(cursoId);

            if (curso == null || !curso.ContieneEstudiante(estId) ||
                !curso.ContieneDesafio(desafioId))
            {
                throw new ApplicationServicesException("");
            }

            var model = await _data.Find_RegistroCalificacion(
                cursoId, estId, desafioId);

            if (model == null)
            {
                model = new RegistroCalificacion()
                {
                    CursoId        = cursoId,
                    DesafioId      = desafioId,
                    EstudianteId   = estId,
                    Calificaciones = new List <Calificacion>()
                };
                _data.Add(model);
                if (!await _data.SaveAllAsync())
                {
                    throw new ApplicationServicesException("");
                }
            }
            return(new CalificacionDesafioViewModel(model));
        }
예제 #3
0
        public CalificacionDesafioViewModel(RegistroCalificacion model, List <Calificacion> calificacionesColaborador, int?siguienteDesafioId)
        {
            CursoId             = model.CursoId;
            EstudianteId        = model.EstudianteId;
            DesafioId           = model.Desafio.Id;
            Nombre              = model.Desafio.Nombre;
            Descripcion         = model.Desafio.Descripcion;
            UrlEscenarioInicial = model.Desafio.DirDesafioInicial;
            SiguienteDesafioId  = siguienteDesafioId.GetValueOrDefault();

            if (calificacionesColaborador == null)
            {
                calificacionesColaborador = new List <Calificacion>();
            }

            var cals = model.Calificaciones;

            cals.AddRange(calificacionesColaborador);

            Calificaciones = cals
                             .Where(item => item.TiempoFinal != null)
                             .Select(cal => cal.ToViewModel())
                             .OrderByDescending(cal => cal.TiempoFinal)
                             .ToList();

            var calPendiente = model.Calificaciones
                               .FirstOrDefault(cal => cal.EnCurso);

            CalificacionPendiente = (calPendiente != null)? calPendiente.ToViewModel(): null;
        }
예제 #4
0
 public void Add_RegistroCalificacion(RegistroCalificacion model)
 {
     Add(model);
     foreach (var calificacion in model.Calificaciones)
     {
         AddCalificacion(calificacion);
     }
 }
 public CalificacionDesafioViewModel(RegistroCalificacion model)
 {
     Rel_CursoEstudiantes = model.Rel_CursoEstudiantes;
     Desafio        = model.Desafio;
     Calificaciones = model.Calificaciones
                      .Select(cal => new ResultadoDesafioViewModel(cal))
                      .ToList();
 }
예제 #6
0
 public CalificacionesViewModel(string nombreCurso,
                                string nombreEstudiante, string nombreDesafio,
                                List <CalificacionViewModel> calificacionList,
                                RegistroCalificacion registro)
 {
     NombreCurso      = nombreCurso;
     NombreEstudiante = nombreEstudiante;
     NombreDesafio    = nombreDesafio;
     Registro         = registro;
     CalificacionList = calificacionList;
 }
예제 #7
0
        public async Task <ApiResult <CalificacionDesafioViewModel> > Get_Desafio(
            int estId, int cursoId, int desafioId)
        {
            var curso = await _data.Find_Curso(cursoId);

            if (curso == null || !curso.ContieneEstudiante(estId) ||
                !curso.ContieneDesafio(desafioId))
            {
                throw new ApiNotFoundException("El desafío al que intentas acceder no existe.");
            }

            var model = await _data.Find_RegistroCalificacion(
                cursoId, estId, desafioId);

            var calificacionesColaborador = new List <Calificacion>();

            int?nextChallenge = null;

            if (model == null)
            {
                model = new RegistroCalificacion()
                {
                    CursoId        = cursoId,
                    DesafioId      = desafioId,
                    EstudianteId   = estId,
                    Calificaciones = new List <Calificacion>()
                    {
                        new Calificacion()
                        {
                            Resultados   = new List <ResultadoScratch>(),
                            CursoId      = cursoId,
                            DesafioId    = desafioId,
                            EstudianteId = estId,
                            DirArchivo   = ""
                        }
                    }
                };
                _data.Add_RegistroCalificacion(model);
                await _data.SaveAllAsync();
            }
            else
            {
                var regEstudiante = await _data.Find_Rel_CursoEstudiantes(cursoId, estId);

                calificacionesColaborador = regEstudiante.Colaboraciones.Select(colab => colab.Calificacion)
                                            .Where(cal => cal.DesafioId == desafioId)
                                            .ToList();
                nextChallenge = await GetNextChallenge(cursoId, estId, desafioId);
            }

            return(ApiResult <CalificacionDesafioViewModel> .Initialize(
                       new CalificacionDesafioViewModel(model, calificacionesColaborador, nextChallenge), true));
        }
예제 #8
0
        public static RegistroCalificacionViewModel ToViewModel(this RegistroCalificacion model)
        {
            return(new RegistroCalificacionViewModel()
            {
                CursoId = model.CursoId,
                EstudianteId = model.EstudianteId,

                DesafioId = model.DesafioId,
                NombreDesafio = model.Desafio.Nombre,

                Iniciada = model.Iniciada,
                Terminada = model.Terminada,

                Valorada = model.Valorada,

                Calificaciones = model.Calificaciones.Where(cal => cal != null && cal.ResultadoGeneral != null).Select(cal => new CalificacionViewModel(cal, model.Desafio.InfoDesafio)).ToList()
            });
        }