Exemple #1
0
 // GET api/movies/5
 public Movie Get(int ID)
 {
     using (var db = new MoviesDB())
     {
         return(db.Movies.FirstOrDefault(m => m.ID == ID));
     }
 }
Exemple #2
0
 // GET api/movies
 public IEnumerable <Movie> Get()
 {
     using (var db = new MoviesDB())
     {
         return(db.Movies.ToList());
     }
 }
Exemple #3
0
        public void Setup()
        {
            var options = new DbContextOptionsBuilder <MoviesDB>()
                          .UseInMemoryDatabase(databaseName: "Movies Test").Options;

            context = new MoviesDB(options);
        }
Exemple #4
0
        public ActionResult AllMovies(string sortRadioButton)
        {
            int radioButtonPressed = Convert.ToInt32(Request.Form["sortRadioButton"]);
            var movieEntities      = new MoviesDB();

            return(View(movieEntities.GetMovie(radioButtonPressed)));
        }
Exemple #5
0
    static void ReadMoviesDirectors(MoviesDB moviesDB, string path, bool printSep, int width)
    {
        byte[] content = File.ReadAllBytes(path + "/movies_directors.csv");

        long msecs1 = Environment.TickCount;

        bool indexCreationTriggered = false;

        CsvReader reader = new CsvReader(content);

        reader.SkipLine();
        while (!reader.Eof())
        {
            int directorId = (int)reader.ReadLong();
            reader.Skip(';');
            int movieId = (int)reader.ReadLong();
            reader.SkipLine();

            moviesDB.AddMovieDirector(movieId, directorId);

            if (!indexCreationTriggered)
            {
                moviesDB.DirectorsOf(0);
                indexCreationTriggered = true;
            }
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #6
0
    //////////////////////////////////////////////////////////////////////////////

    static void ReadMovies(MoviesDB moviesDB, string path, bool printSep, int width)
    {
        byte[] content = File.ReadAllBytes(path + "/movies.csv");

        long msecs1 = Environment.TickCount;

        string[] empty = new string[0];

        CsvReader reader = new CsvReader(content);

        reader.SkipLine();
        while (!reader.Eof())
        {
            int id = (int)reader.ReadLong();
            reader.Skip(';');
            string name = reader.ReadString();
            reader.Skip(';');
            int year = (int)reader.ReadLong();
            reader.Skip(';');
            double rank = reader.ReadDouble();
            reader.SkipLine();

            moviesDB.AddMovie(id, name, year, rank, empty);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #7
0
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////

    static void MoviesWithActorsInCommon(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        int maxId    = (int)moviesDB.MaxMovieId();
        int numOfIds = (int)moviesDB.NumOfMovies() / 6;

        int[] randomIds = RandomInts(maxId, numOfIds, 64798);

        long count  = 0;
        int  misses = 0;

        foreach (int id in randomIds)
        {
            if (moviesDB.MovieExists(id))
            {
                long[] movies = moviesDB.MoviesWithActorsInCommon(id);
                count += movies.Length;
            }
            else
            {
                misses++;
            }
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #8
0
    static void RunStoringTest(string inputPath, string outputFile, bool runUpdates, int repetitions)
    {
        MoviesDB moviesDB = new MoviesDB();

        ReadCsvFiles(moviesDB, inputPath, false);

        if (runUpdates)
        {
            RunUpdates(moviesDB, false);
        }

        for (int i = 0; i < repetitions; i++)
        {
            long msecs1 = Environment.TickCount;

            string file = outputFile;
            if (repetitions > 1 && file.EndsWith(".txt"))
            {
                file = file.Substring(0, file.Length - 4) + string.Format("-{0:D2}", i) + ".txt";
            }

            using (Stream stream = new FileStream(file, FileMode.Create)) {
                moviesDB.Save(stream);
            }

            long msecs2 = Environment.TickCount;
            PrintTime(msecs2 - msecs1, false, 6);
            Console.WriteLine();
        }
    }
        // GET: api/Movie/Get/5
        public MovieData Get(Guid id)
        {
            MovieData movie = new MovieData();

            using (MoviesDB db = new MoviesDB())
            {
                Movies               movieFromDb   = db.Movies.Where(x => x.Id == id).FirstOrDefault();
                List <Genres>        genres        = db.Genres1.Where(x => x.MovieId == id).ToList();
                List <StreamSources> streamSources = db.StreamSources1.Where(x => x.MovieId == id).ToList();
                movie.Id            = movieFromDb.Id;
                movie.Title         = movieFromDb.Title;
                movie.Cast          = movieFromDb.Cast;
                movie.Country       = movieFromDb.Country;
                movie.CoverPath     = movieFromDb.CoverPath;
                movie.Dabing        = movieFromDb.Dabing;
                movie.Description   = movieFromDb.Description;
                movie.Director      = movieFromDb.Director;
                movie.Lenght        = movieFromDb.Lenght;
                movie.OriginalTitle = movieFromDb.OriginalTitle != null ? movieFromDb.OriginalTitle : movieFromDb.Title;
                movie.ReleaseDate   = movieFromDb.ReleaseDate;
                foreach (var genre in genres.Where(n => n.MovieId == movieFromDb.Id))
                {
                    movie.Genres.Add(genre.GenreType);
                }
                foreach (var source in streamSources.Where(n => n.MovieId == movieFromDb.Id))
                {
                    movie.StreamSources.Add(source.Source);
                }
            }

            return(movie);
        }
Exemple #10
0
        public async Task <IActionResult> Added(MoviesDB movie)
        {
            if (ModelState.IsValid)
            {
                var files = HttpContext.Request.Form.Files;
                if (files.Count() > 0)
                {
                    byte[] p1 = null;
                    using (var fs1 = files[0].OpenReadStream())
                    {
                        using (var ms1 = new MemoryStream())
                        {
                            fs1.CopyTo(ms1);
                            p1 = ms1.ToArray();
                        }
                    }
                    movie.Banner = p1;
                }
                _db.MoviesDb.Add(movie);
                await _db.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(movie));
        }
Exemple #11
0
    static void BumpUpRankOfMovieAndAllItsActorsAndDirectors(MoviesDB moviesDB, double factor, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        int maxId = 0;

        foreach (Movie m in moviesDB.movies.Values)
        {
            if (m.id > maxId)
            {
                maxId = m.id;
            }
        }
        int numOfIds = moviesDB.movies.Count / 4;

        int[] randomIds = RandomInts(maxId, numOfIds, 735025);

        foreach (int id in randomIds)
        {
            Movie movie;
            if (moviesDB.movies.TryGetValue(id, out movie))
            {
                moviesDB.BumpUpRankOfMovieAndAllItsActorsAndDirectors(movie, factor);
            }
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #12
0
    static void ReadRoles(MoviesDB moviesDB, String path, bool printSep, int width)
    {
        byte[] content = File.ReadAllBytes(path + "/roles.csv");

        long msecs1 = Environment.TickCount;

        CsvReader reader = new CsvReader(content);

        reader.SkipLine();
        while (!reader.Eof())
        {
            int actorId = (int)reader.ReadLong();
            reader.Skip(';');
            int movieId = (int)reader.ReadLong();
            reader.Skip(';');
            String role = reader.ReadString();
            reader.SkipLine();

            moviesDB.AddRole(actorId, movieId, role);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #13
0
    static void ReadDirectors(MoviesDB moviesDB, string path, bool printSep, int width)
    {
        byte[] content = File.ReadAllBytes(path + "/directors.csv");

        long msecs1 = Environment.TickCount;

        CsvReader reader = new CsvReader(content);

        reader.SkipLine();
        while (!reader.Eof())
        {
            int id = (int)reader.ReadLong();
            reader.Skip(';');
            string firstName = reader.ReadString();
            reader.Skip(';');
            string lastName = reader.ReadString();
            reader.SkipLine();

            moviesDB.AddDirector(id, firstName, lastName);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #14
0
        public ActionResult Edit(Movie movie)
        {
            var moviesDB = new MoviesDB();

            moviesDB.UpdateMovie(movie);

            return(RedirectToAction("AllMovies"));
        }
Exemple #15
0
    static void DeleteDirectorsWithNoMovies(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        moviesDB.DeleteDirectorsWithNoMovies();
        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #16
0
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////

    static void DeleteMoviesWithRankBelow(MoviesDB moviesDB, double minRank, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        moviesDB.DeleteMoviesWithRankBelow(minRank);
        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #17
0
    static void CalcDirectorsAvgsMoviesRanks(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        moviesDB.CalcDirectorsAvgsMoviesRanks();
        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
 public async Task <IActionResult> Create([Bind("Id,Title,Producer,Year,Rating")] MovieModel movieModel)
 {
     if (ModelState.IsValid)
     {
         MoviesDB.Create(movieModel);
         return(RedirectToAction(nameof(Index)));
     }
     return(View(movieModel));
 }
Exemple #19
0
 static void ReadCsvFiles(MoviesDB moviesDB, string path, bool printTimes)
 {
     ReadMovies(moviesDB, path, false, printTimes ? 5 : 0);
     ReadActors(moviesDB, path, true, printTimes ? 5 : 0);
     ReadDirectors(moviesDB, path, true, printTimes ? 5 : 0);
     ReadMoviesDirectors(moviesDB, path, true, printTimes ? 5 : 0);
     ReadMoviesGenres(moviesDB, path, true, printTimes ? 5 : 0);
     ReadRoles(moviesDB, path, true, printTimes ? 6 : 0);
 }
Exemple #20
0
 // POST api/movies
 public Movie Post(Movie movie)
 {
     using (var db = new MoviesDB())
     {
         db.Movies.Add(movie);
         db.SaveChanges();
     }
     return(movie);
 }
Exemple #21
0
    static void RunTests(String path, int numOfQueryRuns, bool runUpdates)
    {
        MoviesDB moviesDB = new MoviesDB();

        bool noQueries = numOfQueryRuns == 0;

        ReadMovies(moviesDB, path, false, noQueries ? 5 : 0);
        ReadActors(moviesDB, path, true, noQueries ? 5 : 0);
        ReadDirectors(moviesDB, path, true, noQueries ? 5 : 0);
        ReadMoviesDirectors(moviesDB, path, true, noQueries ? 5 : 0);
        ReadMoviesGenres(moviesDB, path, true, noQueries ? 5 : 0);
        ReadRoles(moviesDB, path, true, noQueries ? 6 : 0);

        if (!runUpdates)
        {
            for (int i = 0; i < numOfQueryRuns; i++)
            {
                if (i > 0)
                {
                    Console.Write("\n");
                }
                RunQueries(moviesDB);
            }
        }

        if (runUpdates)
        {
            BumpUpRankOfMoviesMadeInOrBefore(moviesDB, new int[] { 1970, 1989, 2000 },
                                             new double[] { 0.2, 0.05, 0.05 }, true, noQueries ? 6 : 0);

            CalcActorsAvgsMoviesRanks(moviesDB, true, noQueries ? 4 : 0);
            CalcDirectorsAvgsMoviesRanks(moviesDB, true, noQueries ? 4 : 0);

            BumpUpRankOfMovieAndAllItsActorsAndDirectors(moviesDB, 0.1, true, noQueries ? 5 : 0);

            DeleteMoviesWithRankBelow(moviesDB, 4.0, true, noQueries ? 5 : 0);
            DeleteActorsWithNoRoles(moviesDB, true, noQueries ? 4 : 0);
            DeleteDirectorsWithNoMovies(moviesDB, true, noQueries ? 4 : 0);
        }

        if (runUpdates)
        {
            for (int i = 0; i < numOfQueryRuns; i++)
            {
                if (i > 0)
                {
                    Console.Write("\n");
                }
                RunQueries(moviesDB);
            }
        }

        Console.WriteLine();
    }
Exemple #22
0
        //detail view
        public async Task <IActionResult> Movie(int?id, MoviesDB cat)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var movie = await _db.MoviesDb.FindAsync(id);

            return(View(movie));
        }
Exemple #23
0
        public async Task <IActionResult> Delete(MoviesDB mov)
        {
            if (mov.Id == null)
            {
                return(NotFound());
            }
            _db.MoviesDb.Remove(mov);
            await _db.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
Exemple #24
0
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////

    static void BumpUpRankOfMoviesMadeInOrBefore(MoviesDB moviesDB, int[] years, double[] factors, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        for (int i = 0; i < years.Length; i++)
        {
            moviesDB.BumpUpRankOfMoviesMadeInOrBefore(years[i], factors[i]);
        }
        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
 private Movie Map(MoviesDB moviesDB)
 {
     if (moviesDB == null)
     {
         return(null);
     }
     return(new Movie()
     {
         Id = moviesDB.Id,
         Title = moviesDB.Title,
         ReleaseYear = moviesDB.ReleaseYear
     });
 }
        // Configure is called after ConfigureServices is called.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
        {
            // Configure the HTTP request pipeline.
            // Add the console logger.
            loggerfactory.AddConsole();

            // Add the following to the request pipeline only in development environment.
            if (string.Equals(env.EnvironmentName, "Development", StringComparison.OrdinalIgnoreCase))
            {
                app.UseBrowserLink();
                app.UseErrorPage(ErrorPageOptions.ShowAll);
                app.UseDatabaseErrorPage(DatabaseErrorPageOptions.ShowAll);
            }
            else
            {
                // Add Error handling middleware which catches all application specific errors and
                // send the request to the following path or controller action.
                app.UseErrorHandler("/Home/Error");
            }

            // Add static files to the request pipeline.
            app.UseStaticFiles();

            // Add cookie-based authentication to the request pipeline.
            app.UseIdentity();

            // Add MVC to the request pipeline.
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action}/{id?}",
                    defaults: new { controller = "Movies", action = "Index" });

                // Uncomment the following line to add a route for porting Web API 2 controllers.
                // routes.MapWebApiRoute("DefaultApi", "api/{controller}/{id?}");
            });

            // Seed database
            var db = new MoviesDB();

            db.Database.EnsureCreated();
            if (db.Movies.Count() == 0)
            {
                db.Movies.Add(new Movie {
                    Title = "Memento", Director = "Nolan"
                });
                db.SaveChanges();
            }
        }
Exemple #27
0
    static void NumOfActorsWhoPlayedInAMovieWithRankAbove(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        int[] counts = new int[50];
        for (int i = 0; i < 50; i++)
        {
            counts[i] = (int)moviesDB.NumOfActorsWhoPlayedInAMovieWithRankAbove((i + 1) * 0.2);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #28
0
    static void NumOfMoviesWithRankAbove(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        int[] counts = new int[100];
        for (int i = 0; i < 100; i++)
        {
            counts[i] = (int)moviesDB.NumOfMoviesWithRankAbove((i + 1) * 0.1);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #29
0
    static void DirectorsWhoAreAlsoActors(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        long[] directorsActors = moviesDB.DirectorsWhoAreAlsoActors();
        if (directorsActors.Length == 0)
        {
            throw new Exception();
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #30
0
    static void MoviesAgeHistogram(MoviesDB moviesDB, bool printSep, int width)
    {
        long msecs1 = Environment.TickCount;

        long[] histogram;
        for (int i = 0; i < 50; i++)
        {
            histogram = moviesDB.MovieAgeHistogram(1900, 5.0 + i * 0.1);
        }

        long msecs2 = Environment.TickCount;

        PrintTime(msecs2 - msecs1, printSep, width);
    }
Exemple #31
0
 public MovieRepository()
 {
     _context = new MoviesDB();
 }