Exemplo n.º 1
0
        //Recoge una lista de evaluaciones con datos de información de muchas tablas filtrandola por paginado
        public List <EvaluacionInfoDto> GetEvaluationInfoAndPage(int IdProject, int pageNumber)
        {
            //Recogemos las evaluaciones y la paginamos
            List <EvaluacionInfoDto> EvaluacionesInformativas = new List <EvaluacionInfoDto>();
            var Evaluaciones = _context.Evaluaciones.Where(e => e.ProyectoId == IdProject).Skip(5 * pageNumber).Take(5)
                               .ToList();

            //Encuentra la informacion de la evaluacion y lo introduce en un objeto
            foreach (var evaluacion in Evaluaciones)
            {
                EvaluacionInfoDto EvaluacionInfo = _context.Respuestas.
                                                   Include(r => r.EvaluacionEntity).
                                                   ThenInclude(e => e.ProyectoEntity).
                                                   ThenInclude(p => p.UserEntity).
                                                   Where(e => e.EvaluacionId == evaluacion.Id)
                                                   .Select(r => new EvaluacionInfoDto
                {
                    Id         = r.EvaluacionEntity.Id,
                    Fecha      = r.EvaluacionEntity.Fecha.Date,
                    Estado     = r.EvaluacionEntity.Estado,
                    Nombre     = r.EvaluacionEntity.ProyectoEntity.Nombre,
                    UserNombre = r.EvaluacionEntity.ProyectoEntity.UserNombre
                })
                                                   .FirstOrDefault <EvaluacionInfoDto>();
                //Calcula el número de preguntas y el número de respuestas de esa evaluación
                EvaluacionInfo.NPreguntas  = _context.Respuestas.Where(r => r.EvaluacionId == evaluacion.Id).Count();
                EvaluacionInfo.NRespuestas = _context.Respuestas.Where(r => r.Estado == true && r.EvaluacionId == evaluacion.Id).Count();

                //Añade el objeto en la lista
                EvaluacionesInformativas.Add(EvaluacionInfo);
            }

            return(EvaluacionesInformativas);
        }
Exemplo n.º 2
0
        public IActionResult GetEvaluationInfoFromIdEvaluation(int idEvaluacion)
        {
            try
            {
                //Recoge si existe la evaluación si es asi la devuelve si no es así muestra un error
                EvaluacionInfoDto progress = _evaluacionInfoRepository.GetEvaluationInfoFromIdEvaluation(idEvaluacion);

                if (progress == null)
                {
                    _logger.LogInformation("La evaluación información con id " + idEvaluacion + " no pudo ser encontrado.");
                    return(NotFound());
                }

                return(Ok(progress));
            }
            catch (Exception ex)
            {
                _logger.LogCritical("Se recogio un error al recibir la evaluación con toda su información con id " + idEvaluacion + ": " + ex);
                return(StatusCode(500, "Un error ha ocurrido mientras se procesaba su petición."));
            }
        }
        //Recoge una lista de evaluaciones con datos de información de muchas tablas
        public List <EvaluacionInfoDto> GetEvaluationInfo(int IdProject)
        {
            List <EvaluacionInfoDto> EvaluacionesInformativas = new List <EvaluacionInfoDto>();
            var Evaluaciones = _context.Evaluaciones.
                               Include(r => r.ProyectoEntity).
                               ThenInclude(p => p.UserEntity).OrderByDescending(e => e.Fecha)
                               .Where(e => e.ProyectoId == IdProject).ToList();

            //Encuentra la informacion de la evaluacion y lo introduce en un objeto
            foreach (var evaluacion in Evaluaciones)
            {
                EvaluacionInfoDto EvaluacionInfo = new EvaluacionInfoDto
                {
                    Id         = evaluacion.Id,
                    Fecha      = evaluacion.Fecha,
                    Estado     = evaluacion.Estado,
                    Nombre     = evaluacion.ProyectoEntity.Nombre,
                    UserNombre = evaluacion.ProyectoEntity.UserNombre,
                    NotasEv    = evaluacion.NotasEvaluacion,
                    NotasOb    = evaluacion.NotasObjetivos
                };


                if (evaluacion.Estado == false)
                {
                    EvaluacionInfo.Puntuacion = CalculaPuntuacion(evaluacion.Id);
                }
                else
                {
                    EvaluacionInfo.Puntuacion = evaluacion.Puntuacion;
                }

                if (0 < _context.NotasAsignaciones.Where(r => r.EvaluacionId == evaluacion.Id && r.Notas != null && r.Notas != "").Count())
                {
                    EvaluacionInfo.FlagNotasAsig = true;
                }
                else
                {
                    EvaluacionInfo.FlagNotasAsig = false;
                }


                if (0 < _context.NotasSections.Where(r => r.EvaluacionId == evaluacion.Id && r.Notas != null && r.Notas != "").Count())
                {
                    EvaluacionInfo.FlagNotasSec = true;
                }
                else
                {
                    EvaluacionInfo.FlagNotasSec = false;
                }

                var    listaev = _context.Evaluaciones.Where(r => r.ProyectoId == evaluacion.ProyectoId && r.Estado == true).ToList();
                double suma    = 0;

                foreach (var ev in listaev)
                {
                    suma += ev.Puntuacion;
                }

                if (listaev.Count > 0)
                {
                    EvaluacionInfo.Media = suma / listaev.Count;
                }
                else
                {
                    EvaluacionInfo.Media = -1;
                }

                //Añade el objeto en la lista
                EvaluacionesInformativas.Add(EvaluacionInfo);
            }
            return(EvaluacionesInformativas);
        }
        //Metodo que devuelve un filtrado de evaluaciones paginada sin proyectos
        public List <EvaluacionInfoDto> GetEvaluationInfoAndPageFilteredAdmin(int pageNumber, EvaluacionInfoPaginationDto Evaluacion)
        {
            //Recogemos las evaluaciones y la paginamos
            List <EvaluacionInfoDto> EvaluacionesInformativas = new List <EvaluacionInfoDto>();
            List <EvaluacionEntity>  Evaluaciones;

            if (Evaluacion.Estado != null && Evaluacion.Estado != "")
            {
                Evaluaciones = _context.Evaluaciones.
                               Include(r => r.ProyectoEntity).
                               ThenInclude(p => p.UserEntity).
                               Where(e => e.Estado == Boolean.Parse(Evaluacion.Estado) &&
                                     e.Fecha.Date.ToString("dd/MM/yyyy").Contains(Evaluacion.Fecha) &&
                                     e.ProyectoEntity.UserNombre.ToLower().Contains(Evaluacion.UserNombre.ToLower())
                                     ).OrderByDescending(e => e.Fecha).ToList();
            }
            else
            {
                Evaluaciones = _context.Evaluaciones.
                               Include(r => r.ProyectoEntity).
                               ThenInclude(p => p.UserEntity).
                               Where(e => e.Fecha.Date.ToString("dd/MM/yyyy").Contains(Evaluacion.Fecha) &&
                                     e.ProyectoEntity.Nombre.Contains(Evaluacion.Nombre) &&
                                     e.ProyectoEntity.UserNombre.ToLower().Contains(Evaluacion.UserNombre.ToLower())
                                     ).OrderByDescending(e => e.Fecha).ToList();
            }


            //Encuentra la informacion de la evaluacion y lo introduce en un objeto
            foreach (var evaluacion in Evaluaciones)
            {
                EvaluacionInfoDto EvaluacionInfo = new EvaluacionInfoDto
                {
                    Id         = evaluacion.Id,
                    Fecha      = evaluacion.Fecha,
                    Estado     = evaluacion.Estado,
                    Nombre     = evaluacion.ProyectoEntity.Nombre,
                    UserNombre = evaluacion.ProyectoEntity.UserNombre,
                    NotasEv    = evaluacion.NotasEvaluacion,
                    NotasOb    = evaluacion.NotasObjetivos
                };

                if (evaluacion.Estado == false)
                {
                    EvaluacionInfo.Puntuacion = CalculaPuntuacion(evaluacion.Id);
                }
                else
                {
                    EvaluacionInfo.Puntuacion = evaluacion.Puntuacion;
                }


                if (0 < _context.NotasAsignaciones.Where(r => r.EvaluacionId == evaluacion.Id && r.Notas != null && r.Notas != "").Count())
                {
                    EvaluacionInfo.FlagNotasAsig = true;
                }
                else
                {
                    EvaluacionInfo.FlagNotasAsig = false;
                }


                if (0 < _context.NotasSections.Where(r => r.EvaluacionId == evaluacion.Id && r.Notas != null && r.Notas != "").Count())
                {
                    EvaluacionInfo.FlagNotasSec = true;
                }
                else
                {
                    EvaluacionInfo.FlagNotasSec = false;
                }

                var    listaev = _context.Evaluaciones.Where(r => r.ProyectoId == evaluacion.ProyectoId && r.Estado == true).ToList();
                double suma    = 0;

                foreach (var ev in listaev)
                {
                    suma += ev.Puntuacion;
                }

                if (listaev.Count > 0)
                {
                    EvaluacionInfo.Media = suma / listaev.Count;
                }
                else
                {
                    EvaluacionInfo.Media = -1;
                }


                //Añade el objeto en la lista
                EvaluacionesInformativas.Add(EvaluacionInfo);
            }
            return(EvaluacionesInformativas);
        }