//=============================================================================================================================================================== public bool AddSeguimiento(Seguimiento seguimiento) { //buscamos si ya existe un seguimiento (es decir si el estudiante "seguidor" sigue al estudiante "seguido") Estudiante_sigue_EstudianteDAO seg = RepositoryDAL1.Read <Estudiante_sigue_EstudianteDAO>(x => x.id_estudianteSeguido.Equals(seguimiento.id_estudianteSeguido) && x.id_estudianteSeguidor.Equals(seguimiento.id_estudianteSigue)).FirstOrDefault(); //si no existe if (seg == null) { seg = new Estudiante_sigue_EstudianteDAO { id_estudianteSeguidor = seguimiento.id_estudianteSigue, id_estudianteSeguido = seguimiento.id_estudianteSeguido }; if (RepositoryDAL1.Create(seg)) { EstudianteDAO estSeguido = RepositoryDAL1.Read <EstudianteDAO>(x => x.id_usuario.Equals(seguimiento.id_estudianteSeguido)).FirstOrDefault(); if (estSeguido == null) { return(false); //error, no existe el estudiante q usted quiere seguir } //sumamos la cantidad de seguidores estSeguido.numero_seguidores += 1; return(RepositoryDAL1.Update(estSeguido)); //se creo el seguimiento correctamente y se sumo los seguidores al seguido } //fallo al entra a la base de datos } //ya existia el seguimiento, no se hizo nada return(false); }
//=============================================================================================================================================================== public bool DeleteSeguimiento(Seguimiento seguimiento) { Estudiante_sigue_EstudianteDAO seg = RepositoryDAL1.Read <Estudiante_sigue_EstudianteDAO>(x => x.id_estudianteSeguido.Equals(seguimiento.id_estudianteSeguido) && x.id_estudianteSeguidor.Equals(seguimiento.id_estudianteSigue)).FirstOrDefault(); if (seg == null) { return(false); //no existe el seguimiento } if (RepositoryDAL1.Delete(seg)) { EstudianteDAO estSeguido = RepositoryDAL1.Read <EstudianteDAO>(x => x.id_usuario.Equals(seguimiento.id_estudianteSeguido)).FirstOrDefault(); if (estSeguido == null) { return(false); //error, no existe el estudiante q usted quiere dejar seguir } estSeguido.numero_seguidores -= 1; //restamos cantidad de seguidores return(RepositoryDAL1.Update(estSeguido)); //se actualizo y dejo de seguir estudiante //problema actualizando el estudiante } //problema borrando return(false); }
//este método busca las publicaciones que se van a mostar en la página de otro //estudiante cuando se visita otro perfil. public IEnumerable <Publicacion> GetPublicaciones(string userid, string otherUserId, int pag) { Estudiante_sigue_EstudianteDAO estudianteSeguido = RepositoryDAL1.Read <Estudiante_sigue_EstudianteDAO>(x => x.id_estudianteSeguidor.Equals(userid) && x.id_estudianteSeguido.Equals(otherUserId)).FirstOrDefault(); if (estudianteSeguido == null) { return(null); } string IdEstudianteSeguido = estudianteSeguido.id_estudianteSeguido; List <PublicacionDAO> listaPublicacionesVisibles = RepositoryDAL1.Read <PublicacionDAO, DateTime>(x => x.id_estudiante.Equals(IdEstudianteSeguido) && 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); }