//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(); }
/// <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)); }