//este método busca las publicaciones que se van a mostar en la página principal
        //para el estudiante que se logueó
        public void AddDatosPublicacion <T>(PublicacionDAO publicacion, List <ComentarioDAO> comentarios, List <EvaluacionDAO> evaluaciones, List <UsuarioDAO> listaUsuarios, List <Tecnologia_x_publicacionDAO> listaTecnologiasxPublicacion, List <TecnologiaDAO> listaTecnologias, string userid, ref T publicacionAAgregar) where T : Publicacion
        {
            publicacionAAgregar.CantidadComentarios  = comentarios.Where(x => x.id_publicacion == publicacion.id && x.activo).Count();
            publicacionAAgregar.CantidadEvaluaciones = evaluaciones.Where(x => x.id_publicacion == publicacion.id).Count();
            publicacionAAgregar.Descripcion          = publicacion.descripcion;
            publicacionAAgregar.FechaCreacion        = publicacion.fecha_publicacion;
            publicacionAAgregar.Id       = publicacion.id;
            publicacionAAgregar.Id_autor = publicacion.id_estudiante;
            EvaluacionDAO miEvaluacion = evaluaciones.Where(x => x.id_estudiante.Equals(userid) && x.id_publicacion == publicacion.id).FirstOrDefault();

            publicacionAAgregar.MiEvaluacion = miEvaluacion == null ? "null" : ((bool)miEvaluacion.positiva ? "pos" : "neg");
            UsuarioDAO usuario = listaUsuarios.Where(x => x.id.Equals(publicacion.id_estudiante)).FirstOrDefault();

            publicacionAAgregar.Nombre_autor = usuario.nombre + " " + usuario.apellido;
            List <Publicacion.Tecnologia> listaTecnologiasPub = new List <Publicacion.Tecnologia>();

            foreach (var tecnologia in listaTecnologiasxPublicacion.Where(x => publicacion.id == x.id_publicacion))
            {
                listaTecnologiasPub.Add(new Publicacion.Tecnologia
                {
                    Nombre = listaTecnologias.Where(x => x.id == tecnologia.id_tecnologia).FirstOrDefault().nombre
                });
            }
            publicacionAAgregar.Tecnologias = listaTecnologiasPub;
            publicacionAAgregar.Titulo      = publicacion.titulo;
        }
 public EvaluacionBO()
 {
     proceso    = new List <Evaluacion>();
     objArchivo = new EvaluacionDAO();
     proceso    = objArchivo.leerArchivo();
 }
예제 #3
0
 /// <summary>
 /// llama al metodo insertar y los almacena en la base de datos, en la tabla de evaluaciones
 /// </summary>
 /// <param name="a"></param>
 public void IndexadorDeNotas(Alumno a)
 {
     //evaluacion = new Evaluacion(a.Id, docente.Id, aula.IdAula, nota1, nota2, notaFinal, observacion);
     EvaluacionDAO.InsertarEvaluaciones(a.Id, docente.Id, aula.IdAula, nota1, nota2, notaFinal, observacion);
 }
        public bool AddOrModifyEvaluacion(Evaluacion evaluacion)
        {
            PublicacionDAO        publicacionAEvaluar     = RepositoryDAL1.Read <PublicacionDAO>(x => x.id == evaluacion.id_publicacion).FirstOrDefault();
            EstudianteDAO         estudianteEvaluado      = RepositoryDAL1.Read <EstudianteDAO>(x => x.id_usuario.Equals(publicacionAEvaluar.id_estudiante)).FirstOrDefault();
            List <PublicacionDAO> publicacionesDelUsuario = RepositoryDAL1.Read <PublicacionDAO>(x => x.id_estudiante.Equals(estudianteEvaluado.id_usuario));
            int           totalEvaluacionesNegativas      = publicacionesDelUsuario.Select(x => x.evaluaciones_negativas).Sum();
            int           totalEvaluacionesPositivas      = publicacionesDelUsuario.Select(x => x.evaluaciones_positivas).Sum();
            int           reputacion;
            double        porcentaje0a1;
            EvaluacionDAO evaluacionExistente = RepositoryDAL1.Read <EvaluacionDAO>(x =>
                                                                                    x.id_estudiante.Equals(evaluacion.Id_estudiante) &&
                                                                                    x.id_publicacion == evaluacion.id_publicacion)
                                                .FirstOrDefault();

            if (evaluacion.Tipo_evaluacion.Equals("null") && evaluacionExistente != null)
            {
                if ((bool)evaluacionExistente.positiva)
                {
                    publicacionAEvaluar.evaluaciones_positivas--;
                    totalEvaluacionesPositivas--;
                }
                else
                {
                    publicacionAEvaluar.evaluaciones_negativas--;
                    totalEvaluacionesNegativas--;
                }
                if ((totalEvaluacionesPositivas + totalEvaluacionesNegativas) == 0)
                {
                    reputacion = 0;
                }
                else
                {
                    porcentaje0a1 = ((double)totalEvaluacionesPositivas / ((double)totalEvaluacionesPositivas + (double)totalEvaluacionesNegativas));
                    reputacion    = (int)((porcentaje0a1) * 100);
                }
                estudianteEvaluado.reputacion = reputacion;
                RepositoryDAL1.Update(estudianteEvaluado);
                RepositoryDAL1.Update(publicacionAEvaluar);
                return(RepositoryDAL1.Delete(evaluacionExistente));
            }
            if (publicacionAEvaluar.isTutoria)
            {
                EstudianteDAO     estudianteQueEvalua        = RepositoryDAL1.Read <EstudianteDAO>(x => x.id_usuario.Equals(evaluacion.Id_estudiante)).FirstOrDefault();
                TutoriaDAO        tutoriaEvaluada            = publicacionAEvaluar.Tutorias.Where(x => x.id_publicacion == evaluacion.id_publicacion).FirstOrDefault();
                IEnumerable <int> listaIdTutoriasRegistradas = estudianteQueEvalua.RegistroTutorias.Select(x => x.id_tutoria);
                if (!listaIdTutoriasRegistradas.Contains(tutoriaEvaluada.id) || tutoriaEvaluada.fecha_tutoria > DateTime.Now)
                {
                    return(false); //no se puede evaluar porque no está registrado o la tutoría no ha terminado
                }
            }
            EvaluacionDAO evaluacionAAgregar = new EvaluacionDAO
            {
                id_publicacion = evaluacion.id_publicacion,
                positiva       = evaluacion.Tipo_evaluacion.Equals("pos") ? true : false,
                id_estudiante  = evaluacion.Id_estudiante
            };

            if (evaluacion.Tipo_evaluacion.Equals("pos") && evaluacionExistente != null)
            {
                if (!(bool)evaluacionExistente.positiva) //es negativa
                {
                    publicacionAEvaluar.evaluaciones_positivas++;
                    totalEvaluacionesPositivas++;
                    publicacionAEvaluar.evaluaciones_negativas--;
                    totalEvaluacionesNegativas--;
                }
                else
                {
                    return(true);
                }
                RepositoryDAL1.Delete(evaluacionExistente);
            }
            if (evaluacion.Tipo_evaluacion.Equals("pos") && evaluacionExistente == null)
            {
                publicacionAEvaluar.evaluaciones_positivas++;
                totalEvaluacionesPositivas++;
            }
            if (evaluacion.Tipo_evaluacion.Equals("neg") && evaluacionExistente != null)
            {
                if ((bool)evaluacionExistente.positiva) //es negativa
                {
                    publicacionAEvaluar.evaluaciones_positivas--;
                    totalEvaluacionesPositivas--;
                    publicacionAEvaluar.evaluaciones_negativas++;
                    totalEvaluacionesNegativas++;
                }
                else
                {
                    return(true);
                }
                RepositoryDAL1.Delete(evaluacionExistente);
            }
            if (evaluacion.Tipo_evaluacion.Equals("neg") && evaluacionExistente == null)
            {
                publicacionAEvaluar.evaluaciones_negativas++;
                totalEvaluacionesNegativas++;
            }
            porcentaje0a1 = ((double)totalEvaluacionesPositivas / ((double)totalEvaluacionesPositivas + (double)totalEvaluacionesNegativas));
            reputacion    = (int)((porcentaje0a1) * 100);
            estudianteEvaluado.reputacion = reputacion;
            RepositoryDAL1.Update(estudianteEvaluado);
            RepositoryDAL1.Update(publicacionAEvaluar);
            return(RepositoryDAL1.Create(evaluacionAAgregar));
        }