public IEnumerable <Pelicula> Recomendaciones(String nombre, int grado)
        {
            EntrecineModelContainer db = new EntrecineModelContainer();
            Usuario cliente            = db.UsuarioConjunto.First(u => u.Nombre == nombre);
            Func <Usuario, IEnumerable <Pelicula> > pelisQueVio = usuario => db.ReservaConjunto.Where(r => r.Usuario.Id == usuario.Id).Select(r => r.Sesion.Pelicula);
            Func <Usuario, int> nPelisEnComun = usuario => pelisQueVio(usuario).Intersect(pelisQueVio(cliente)).Count();
            int i = -1;
            IEnumerable <Usuario> usuariosPosiblesOrdenados = db.UsuarioConjunto.Where(u => u.Id != cliente.Id).OrderByDescending(nPelisEnComun).TakeWhile(u => { i++; return(grado > i); });

            if (usuariosPosiblesOrdenados.Count() == 0)
            {
                List <Pelicula>   noMencionadas = new List <Pelicula>();
                IEnumerable <int> mencionadas   = pelisQueVio(cliente).Union(PelisMasVistas).Select(p => p.Id);
                foreach (Pelicula p in db.PeliculaConjunto)
                {
                    if (!mencionadas.Contains(p.Id))
                    {
                        noMencionadas.Add(p);
                    }
                }
                return(noMencionadas.OrderBy(VecesVista));
            }
            IEnumerable <Pelicula> recomendaciones = pelisQueVio(usuariosPosiblesOrdenados.First()).Where(p => !pelisQueVio(cliente).Contains(p));

            return(recomendaciones.Count() == 0 ? Recomendaciones(nombre, grado + 1) : recomendaciones);
        }
Beispiel #2
0
 public ActionResult Index()
 {
     EntrecineModelContainer db = new EntrecineModelContainer();
     List<Pelicula> peliculas = db.PeliculaConjunto.OrderByDescending(x => x.Id).Take(4).ToList();
     peliculas.Shuffle();
     return View(peliculas);
 }
Beispiel #3
0
 public static ActionResult ComprobarRegistrado(EntrecineModelContainer db, String name, ActionResult privilegiado, ActionResult erroneo)
 {
     Usuario user = db.UsuarioConjunto.FirstOrDefault(x => x.Login.Equals(name));
     if (user != null && user.Rol >= 1)
         return privilegiado;
     else
         return erroneo;
 }
    public IEnumerable<Pelicula> Recomendaciones(String nombre, int grado)
    {
        EntrecineModelContainer db = new EntrecineModelContainer();
            Usuario cliente = db.UsuarioConjunto.First(u => u.Nombre == nombre);
            Func<Usuario, IEnumerable<Pelicula>> pelisQueVio = usuario => db.ReservaConjunto.Where(r => r.Usuario.Id == usuario.Id).Select(r => r.Sesion.Pelicula);
            Func<Usuario, int> nPelisEnComun = usuario => pelisQueVio(usuario).Intersect(pelisQueVio(cliente)).Count();
            int i = -1;
            IEnumerable<Usuario> usuariosPosiblesOrdenados = db.UsuarioConjunto.Where(u => u.Id != cliente.Id).OrderByDescending(nPelisEnComun).TakeWhile(u => { i++; return grado > i; });
            if (usuariosPosiblesOrdenados.Count() == 0)
            {
                List<Pelicula> noMencionadas = new List<Pelicula>();
                IEnumerable<int> mencionadas = pelisQueVio(cliente).Union(PelisMasVistas).Select(p => p.Id);
                foreach (Pelicula p in db.PeliculaConjunto)
                    if (!mencionadas.Contains(p.Id))
                        noMencionadas.Add(p);
                return noMencionadas.OrderBy(VecesVista);

            }
            IEnumerable<Pelicula> recomendaciones = pelisQueVio(usuariosPosiblesOrdenados.First()).Where(p => !pelisQueVio(cliente).Contains(p));

            return recomendaciones.Count() == 0 ? Recomendaciones(nombre, grado + 1) : recomendaciones;
    }