コード例 #1
0
        public ActionResult Search(FormCollection fc)
        {
            try
            {
                using (DataModels.dbContext context = new DataModels.dbContext())
                {
                    string score = Request["scoreText"];
                    string genresArr = Request["genres"];
                    List<DataModels.genre> genresSelected = new List<DataModels.genre>();

                    List<DataModels.genre> genres = (from genre in context.genres
                                                     select genre).ToList();

                    if (!String.IsNullOrEmpty(genresArr))
                    {
                        genresSelected = (from genre in genres
                                          where genresArr.Split(',').Contains(genre.id.ToString())
                                          select genre).ToList();
                    }

                    ViewBag.score = score;
                    ViewBag.genres = genres;
                    ViewBag.genresSelected = genresSelected;
                    ViewBag.movieList = getMoviesSearchList(genresSelected, score);

                    return View("Search");
                }
            }
            catch (Exception e)
            {
                return View("ErrNoDbConn");
            }
        }
コード例 #2
0
        private List<DataModels.movie> getMoviesSearchList(List<DataModels.genre> name, string score)
        {
            List<DataModels.movie> movies = new List<DataModels.movie>();

            using (DataModels.dbContext context = new DataModels.dbContext())
            {
                if (name.Any() && !String.IsNullOrEmpty(score))
                {
                    float f = float.Parse(score, CultureInfo.InvariantCulture);
                    List<int> nameIdList = name.Select(n => n.id).ToList();

                    var qq = (from genre in
                                  (from g in context.genres where nameIdList.Contains(g.id) select g)
                              join mg in context.movie_genre on genre.id equals mg.genre_id
                              group mg.moviegenremovieidfkey.id by mg.movie_id into movie
                              select new
                              {
                                  movieCount = movie.Count(),
                                  movieId = movie.Key
                              });
                    movies = (from mvs in qq
                              join movie in context.movies on mvs.movieId equals movie.id
                              where movie.vote_average >= f && mvs.movieCount == name.Count
                              orderby movie.title ascending, movie.vote_average descending
                              select movie).ToList();
                }
                else if (name.Any())
                {
                    List<int> nameIdList = name.Select(n => n.id).ToList();

                    var qq = (from genre in
                                  (from g in context.genres where nameIdList.Contains(g.id) select g)
                              join mg in context.movie_genre on genre.id equals mg.genre_id
                              group mg.moviegenremovieidfkey.id by mg.movie_id into movie
                              select new
                              {
                                  movieCount = movie.Count(),
                                  movieId = movie.Key
                              });
                    movies = (from mvs in qq
                              join movie in context.movies on mvs.movieId equals movie.id
                              where mvs.movieCount == name.Count
                              orderby movie.title ascending, movie.vote_average descending
                              select movie).ToList();
                }
                else if (!String.IsNullOrEmpty(score))
                {
                    float f = float.Parse(score, CultureInfo.InvariantCulture);

                    movies = (from movie in context.movies
                              where movie.vote_average >= f
                              orderby movie.title ascending, movie.vote_average descending
                              select movie).ToList();
                }
            }

            return movies;
        }
コード例 #3
0
        public List<DataModels.movie> getMoviesRanking()
        {
            using (DataModels.dbContext context = new DataModels.dbContext())
            {
                List<DataModels.movie> moviesList = (from movie in context.movies
                                                     orderby movie.vote_average descending, movie.release_date ascending
                                                     select movie).Take(20).ToList();

                return moviesList;
            }
        }
コード例 #4
0
        public ActionResult GetGenresChart()
        {
            try
            {
                using (DataModels.dbContext context = new DataModels.dbContext())
                {
                    var genresq = (from link in context.movie_genre
                                   join genres in context.genres on link.genre_id equals genres.id
                                   group link.genre_id by genres.name into genre
                                   select new
                                   {
                                       genreName = genre.Key,
                                       genreCount = genre.Count()
                                   });

                    List<string> genreName = new List<string>();
                    List<int> genreCount = new List<int>();
                    foreach (var list in genresq)
                    {
                        genreName.Add(list.genreName);
                        genreCount.Add(list.genreCount);
                    }

                    context.Dispose();

                    Chart chart = new Chart();
                    chart.ChartAreas.Add(new ChartArea());
                    chart.Width = 1024;
                    chart.Height = 768;
                    chart.Series.Add(new Series("Genres"));
                    chart.Series["Genres"].ChartType = SeriesChartType.Pie;
                    chart.Series["Genres"].Points.DataBindXY(
                        genresq.Select(g => g.genreName.ToString()).ToArray(),
                        genresq.Select(g => g.genreCount).ToArray());
                    chart.Series["Genres"].Label = "#PERCENT{P0} #VALX";
                    chart.Series["Genres"]["PieLabelStyle"] = "Outside";
                    chart.Series["Genres"]["PieLineColor"] = "Black";

                    MemoryStream ms = new MemoryStream();
                    chart.SaveImage(ms, ChartImageFormat.Png);

                    return File(ms.ToArray(), "image/png");
                }
            }
            catch (Exception e)
            {
                return null;
            }
        }
コード例 #5
0
        public ActionResult Movie(int id)
        {
            try
            {
                using (DataModels.dbContext context = new DataModels.dbContext())
                {
                    DataModels.movie movieD = (from movie in context.movies
                                               where movie.id == id
                                               select movie).SingleOrDefault();

                    List<DataModels.genre> genres = (from mg in context.movie_genre
                                                     where mg.moviegenremovieidfkey.id == movieD.id
                                                     select mg.moviegenregenreidfkey).ToList();

                    string ombdRequest = "http://www.omdbapi.com/?t=" + HttpUtility.UrlEncode(movieD.title) + "&y=&plot=full&r=xml";
                    XmlDocument ombdRespond = MakeOmbdRequest(ombdRequest);

                    if (ombdRespond != null)
                    {
                        try
                        {
                            ViewBag.plot = ombdRespond.GetElementsByTagName("movie")[0].Attributes.GetNamedItem("plot").InnerText;
                        }
                        catch (Exception e)
                        {
                            ViewBag.plot = "Error requesting plot";
                        }
                    }
                    else
                        ViewBag.plot = "Error requesting plot";

                    ViewBag.genres = genres;
                    ViewBag.movie = movieD;

                    return View("Movie");
                }
            }
            catch (Exception e)
            {
                return View("ErrNoDbConn");
            }
        }
コード例 #6
0
 public InstructorIndexViewComponent(DataModels.dbContext context)
 {
     _context = context;
 }
 public StudentsInInstructorViewComponent(DataModels.dbContext context)
 {
     _context = context;
 }