예제 #1
0
 public CalificacionViewModel(Calificacion cal,
                              InfoDesafio infoDesafio)
 {
     Id           = cal.Id;
     CursoId      = cal.CursoId;
     EstudianteId = cal.EstudianteId;
     DesafioId    = cal.DesafioId;
     Calificacion = cal;
     Evaluacion   = new EvaluacionViewModel(cal.ResultadoGeneral,
                                            infoDesafio);
 }
예제 #2
0
        public EvaluacionViewModel(ResultadoScratch resultadoGeneral,
                                   InfoDesafio infoDesafio)
        {
            var infoGeneral = resultadoGeneral.IInfoScratch_General;

            SpriteCount = infoGeneral.SpriteCount;

            EventsUse       = infoGeneral.EventsUse;
            MessageUse      = infoGeneral.MessageUse;
            SharedVariables = infoGeneral.SharedVariables;
            ListUse         = infoGeneral.ListUse;

            float Trans(int n, bool value)
            {
                return((value) ? (n / (float)SpriteCount) : -1f);
            }

            NonUnusedBlocks = Trans(infoGeneral.NonUnusedBlocks,
                                    infoDesafio.NonUnusedBlocks);
            UserDefinedBlocks = Trans(infoGeneral.UserDefinedBlocks,
                                      infoDesafio.UserDefinedBlocks);
            CloneUse = Trans(infoGeneral.CloneUse,
                             infoDesafio.CloneUse);
            SecuenceUse = Trans(infoGeneral.SecuenceUse,
                                infoDesafio.SecuenceUse);
            MultipleThreads = Trans(infoGeneral.MultipleThreads,
                                    infoDesafio.MultipleThreads);
            TwoGreenFlagTrhead = Trans(infoGeneral.TwoGreenFlagTrhead,
                                       infoDesafio.TwoGreenFlagThread);
            AdvancedEventUse = Trans(infoGeneral.AdvancedEventUse,
                                     infoDesafio.AdvancedEventUse);
            UseSimpleBlocks = Trans(infoGeneral.UseSimpleBlocks,
                                    infoDesafio.UseSimpleBlocks);
            UseMediumBlocks = Trans(infoGeneral.UseMediumBlocks,
                                    infoDesafio.UseMediumBlocks);
            UseNestedControl = Trans(infoGeneral.UseNestedControl,
                                     infoDesafio.UseNestedControl);
            BasicInputUse = Trans(infoGeneral.BasicInputUse,
                                  infoDesafio.BasicInputUse);
            VariableUse = Trans(infoGeneral.VariableUse,
                                infoDesafio.VariableUse);
            SpriteSensing = Trans(infoGeneral.SpriteSensing,
                                  infoDesafio.SpriteSensisng);
            VariableCreation = Trans(infoGeneral.VariableCreation,
                                     infoDesafio.NonCreatedVariableUse);
            BasicOperators = Trans(infoGeneral.BasicOperators,
                                   infoDesafio.BasicOperators);
            MediumOperators = Trans(infoGeneral.MediumOperators,
                                    infoDesafio.MediumOperators);
            AdvancedOperators = Trans(infoGeneral.AdvancedOperators,
                                      infoDesafio.NestedOperators);
        }
예제 #3
0
        public CalificacionViewModel(Calificacion cal,
                                     InfoDesafio infoDesafio)
        {
            Id           = cal.Id;
            CursoId      = cal.CursoId;
            EstudianteId = cal.EstudianteId;
            DesafioId    = cal.DesafioId;

            Tiempoinicio = cal.Tiempoinicio;
            TiempoFinal  = cal.TiempoFinal;

            if (cal.CalificacionCualitativa != null)
            {
                CalificacionCualitativaId = cal.CalificacionCualitativa.Id;
            }

            ResultadoSprites = cal.Resultados.Where(item => !item.General)
                               .Select(item => item.ToViewModel()).ToList();

            ResultadoGeneral = cal.ResultadoGeneral.ToViewModel();

            Evaluacion = new EvaluacionViewModel(cal.ResultadoGeneral,
                                                 infoDesafio);
        }
예제 #4
0
        public IQueryable <Desafio> GetAll_Desafios(int?cursoId             = null,
                                                    int?profesorId          = null, string searchString = "",
                                                    InfoDesafio similarInfo = null, bool equality       = false,
                                                    float avgValoration     = 0)
        {
            IQueryable <Desafio> query = Enumerable.Empty <Desafio>()
                                         .AsQueryable();

            if (cursoId != null)
            {
                query = _context
                        .Rel_Cursos_Desafios
                        .Include(rel => rel.Desafio)
                        .Include("Desafio.InfoDesafio")
                        .Include("Desafio.Profesor")
                        .Include("Desafio.Ratings")
                        .Include("Desafio.Cursos")
                        .Where(rel => rel.CursoId == cursoId)
                        .Select(rel => rel.Desafio);
            }
            else
            {
                query = _context.Desafios
                        .Include(d => d.InfoDesafio)
                        .Include(d => d.Profesor)
                        .Include(d => d.Ratings)
                        .Include(d => d.Cursos)
                        .Where(d => d.AverageRating >= avgValoration);
            }


            if (!string.IsNullOrWhiteSpace(searchString))
            {
                query = query
                        .Where(d => d.Nombre.Contains(searchString));
            }

            if (similarInfo != null && !similarInfo.IsFalse)
            {
                if (equality)
                {
                    query = query
                            .Where(d => d.InfoDesafio.IsEqualTo(similarInfo));
                }
                else
                {
                    query = query
                            .Where(d => d.InfoDesafio.IsSimilarTo(similarInfo));
                }
            }

            if (profesorId != null)
            {
                query = query
                        .Where(d => d.ProfesorId == profesorId);
            }

            return(query.OrderByDescending(d => d.AverageRating)
                   .ThenByDescending(d => d.RatingCount)
                   .ThenBy(d => d.Nombre));
        }