public bool QuitarRegistro(int pubId, string estId) { PublicacionDAO publicacion = RepositoryDAL1.Read <PublicacionDAO>(x => x.id == pubId).FirstOrDefault(); TutoriaDAO tutoria = publicacion.Tutorias.FirstOrDefault(); RegistroTutoriaDAO registroExistente = RepositoryDAL1.Read <RegistroTutoriaDAO>(x => x.id_estudiante.Equals(estId) && x.id_tutoria == tutoria.id).FirstOrDefault(); if (registroExistente != null) { return(RepositoryDAL1.Delete(registroExistente)); } return(false); }
public bool RegistrarseEnTutoria(int pubId, string estId) { PublicacionDAO publicacion = RepositoryDAL1.Read <PublicacionDAO>(x => x.id == pubId).FirstOrDefault(); TutoriaDAO tutoria = publicacion.Tutorias.FirstOrDefault(); RegistroTutoriaDAO registroExistente = RepositoryDAL1.Read <RegistroTutoriaDAO>(x => x.id_estudiante.Equals(estId) && x.id_tutoria == tutoria.id).FirstOrDefault(); if (registroExistente == null) { RegistroTutoriaDAO nuevoRegistro = new RegistroTutoriaDAO { id_estudiante = estId, id_tutoria = tutoria.id }; return(RepositoryDAL1.Create(nuevoRegistro)); } return(false); }
public bool CreateTutoria(Tutoria tutoria) { IEnumerable <string> nombresTecnologias = tutoria.Tecnologias.Select(x => x.Nombre); List <TecnologiaDAO> listaTecnologias = RepositoryDAL1.Read <TecnologiaDAO>(x => nombresTecnologias.Contains(x.nombre)); List <Tecnologia_x_publicacionDAO> listaTecnologiasPublicacion = new List <Tecnologia_x_publicacionDAO>(); if (RepositoryDAL1.Create <PublicacionDAO>(new PublicacionDAO { descripcion = tutoria.Descripcion, fecha_publicacion = DateTime.Now, id_estudiante = tutoria.Id_autor, isTutoria = true, titulo = tutoria.Titulo, Tecnologia_x_publicacion = listaTecnologiasPublicacion, activo = true })) { int id_publicacionCreada = RepositoryDAL1.Read <PublicacionDAO, int>(x => x.id > 0, x => x.id).FirstOrDefault().id; TutoriaDAO nuevaTutoria = new TutoriaDAO { costo = tutoria.Costo, id_publicacion = id_publicacionCreada, lugar = tutoria.Lugar, fecha_tutoria = tutoria.FechaTutoria }; if (RepositoryDAL1.Create <TutoriaDAO>(nuevaTutoria)) { foreach (var tecnologia in listaTecnologias) { listaTecnologiasPublicacion.Add(new Tecnologia_x_publicacionDAO { id_tecnologia = tecnologia.id, id_publicacion = id_publicacionCreada }); } EstudianteDAO estudianteAModificar = RepositoryDAL1.Read <EstudianteDAO>(x => x.id_usuario.Equals(tutoria.Id_autor)).FirstOrDefault(); estudianteAModificar.participacion++; RepositoryDAL1.Update(estudianteAModificar); return(RepositoryDAL1.Create <Tecnologia_x_publicacionDAO>(listaTecnologiasPublicacion)); } } return(false); }
public bool AddComentario(Comentario comentario) { PublicacionDAO publicacionDeComentario = RepositoryDAL1.Read <PublicacionDAO>(x => x.id == comentario.id_publicacion).FirstOrDefault(); bool puedeComentar = true; if (publicacionDeComentario.isTutoria) { TutoriaDAO tutoria = publicacionDeComentario.Tutorias.FirstOrDefault(); List <RegistroTutoriaDAO> registroTutoria = tutoria.RegistroTutorias.ToList(); IEnumerable <string> estudiantesRegistrados = registroTutoria.Select(x => x.id_estudiante); puedeComentar = estudiantesRegistrados.Contains(comentario.Id_Autor); } ComentarioDAO nuevoComentario = new ComentarioDAO { contenido = comentario.Contenido, fecha_creacion = DateTime.Now, id_estudiante = comentario.Id_Autor, id_publicacion = comentario.id_publicacion, activo = true }; return(RepositoryDAL1.Create(nuevoComentario)); }
public IEnumerable <Publicacion> GetPublicaciones(string userid, int pag) { List <Estudiante_sigue_EstudianteDAO> listSeguidos = RepositoryDAL1.Read <Estudiante_sigue_EstudianteDAO>(x => x.id_estudianteSeguidor.Equals(userid)); listSeguidos.Add(new Estudiante_sigue_EstudianteDAO { id_estudianteSeguido = userid }); IEnumerable <string> listIdSeguidos = listSeguidos.Select(y => y.id_estudianteSeguido); List <PublicacionDAO> listaPublicacionesVisibles = RepositoryDAL1.Read <PublicacionDAO, DateTime>(x => listIdSeguidos.Contains(x.id_estudiante) && x.activo, x => x.fecha_publicacion); List <PublicacionDAO> veintePublicaciones = listaPublicacionesVisibles.Skip(20 * (pag - 1)).Take(20).ToList(); if (veintePublicaciones.Count() == 0) { return(new List <Publicacion>()); } IEnumerable <int> listaIdPublicaciones = veintePublicaciones.Select(x => x.id); List <TutoriaDAO> listaTutorias = RepositoryDAL1.Read <TutoriaDAO>(x => listaIdPublicaciones.Contains(x.id_publicacion)); IEnumerable <int> listaIDTutorias = listaTutorias.Select(x => x.id); List <RegistroTutoriaDAO> listRegistros = RepositoryDAL1.Read <RegistroTutoriaDAO>(x => listaIDTutorias.Contains(x.id_tutoria)); List <Tecnologia_x_publicacionDAO> listaTecnologiasxPublicacion = RepositoryDAL1.Read <Tecnologia_x_publicacionDAO>(x => listaIdPublicaciones.Contains(x.id_publicacion)); IEnumerable <int> listaIdTecnologias = listaTecnologiasxPublicacion.Select(x => x.id_tecnologia); List <TecnologiaDAO> listaTecnologias = RepositoryDAL1.Read <TecnologiaDAO>(x => listaIdTecnologias.Contains(x.id)); List <ContenidoDAO> listaContenidos = RepositoryDAL1.Read <ContenidoDAO>(x => listaIdPublicaciones.Contains(x.id_publicacion)); IEnumerable <int> listaIdDocumentos = listaContenidos.Where(x => x.id_documento != null).Select(x => (int)x.id_documento); List <DocumentoDAO> listaDocumentos = RepositoryDAL1.Read <DocumentoDAO>(x => listaIdDocumentos.Contains(x.id)); List <ComentarioDAO> comentarios = RepositoryDAL1.Read <ComentarioDAO>(x => listaIdPublicaciones.Contains(x.id_publicacion)); List <EvaluacionDAO> evaluaciones = RepositoryDAL1.Read <EvaluacionDAO>(x => listaIdPublicaciones.Contains(x.id_publicacion)); IEnumerable <string> estudiantesIdPublicando = veintePublicaciones.Select(x => x.id_estudiante); List <UsuarioDAO> listaUsuarios = RepositoryDAL1.Read <UsuarioDAO>(x => estudiantesIdPublicando.Contains(x.id)); List <Publicacion> listaAEnviar = new List <Publicacion>(); foreach (PublicacionDAO publicacion in listaPublicacionesVisibles) { if (publicacion.isTutoria) { Tutoria publicacionAAgregar = new Tutoria(); AddDatosPublicacion(publicacion, comentarios, evaluaciones, listaUsuarios, listaTecnologiasxPublicacion, listaTecnologias, userid, ref publicacionAAgregar); TutoriaDAO tutoria = listaTutorias.Where(x => x.id_publicacion == publicacion.id).FirstOrDefault(); publicacionAAgregar.Costo = tutoria.costo; IEnumerable <string> listaIdEstudiantesRegistro = listRegistros.Where(x => x.id_tutoria == tutoria.id).Select(x => x.id_estudiante); publicacionAAgregar.EstoyRegistrado = listaIdEstudiantesRegistro.Contains(userid) ? true : false; publicacionAAgregar.FechaTutoria = tutoria.fecha_tutoria; publicacionAAgregar.Lugar = tutoria.lugar; listaAEnviar.Add(publicacionAAgregar); } else { Contenido publicacionAAgregar = new Contenido(); AddDatosPublicacion(publicacion, comentarios, evaluaciones, listaUsuarios, listaTecnologiasxPublicacion, listaTecnologias, userid, ref publicacionAAgregar); ContenidoDAO contenido = listaContenidos.Where(x => x.id_publicacion == publicacion.id).FirstOrDefault(); DocumentoDAO documento = listaDocumentos.Where(x => x.id == contenido.id_documento).FirstOrDefault(); publicacionAAgregar.Documento = documento == null ? "" : documento.contenido; publicacionAAgregar.Link = contenido.enlace_extra; publicacionAAgregar.Video = contenido.enlace_video; listaAEnviar.Add(publicacionAAgregar); } } return(listaAEnviar); }
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)); }