public bool CreatePublicacion(Contenido contenido) { IEnumerable <string> nombresTecnologias = contenido.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 = contenido.Descripcion, fecha_publicacion = DateTime.Now, id_estudiante = contenido.Id_autor, isTutoria = false, titulo = contenido.Titulo, Tecnologia_x_publicacion = listaTecnologiasPublicacion, activo = true })) { int id_publicacionCreada = RepositoryDAL1.Read <PublicacionDAO, int>(x => x.id > 0, x => x.id).FirstOrDefault().id; if (contenido.Documento != null) { RepositoryDAL1.Create <DocumentoDAO>(new DocumentoDAO { contenido = contenido.Documento, tipo = "", tamano = 0 }); } int id_contenidoCreado = RepositoryDAL1.Read <DocumentoDAO, int>(x => x.id > 0, x => x.id).FirstOrDefault().id; ContenidoDAO nuevoContenido = new ContenidoDAO { enlace_extra = contenido.Link, enlace_video = contenido.Video, id_publicacion = id_publicacionCreada, id_documento = contenido.Documento != null ? (int?)id_contenidoCreado : null }; if (RepositoryDAL1.Create <ContenidoDAO>(nuevoContenido)) { 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(contenido.Id_autor)).FirstOrDefault(); estudianteAModificar.participacion++; RepositoryDAL1.Update(estudianteAModificar); return(RepositoryDAL1.Create <Tecnologia_x_publicacionDAO>(listaTecnologiasPublicacion)); } } return(false); }
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); }