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