Пример #1
0
        public async Task <IActionResult> AddMovie(AddMovieViewModel addMedia)
        {
            Media        media    = _context.Medias.SingleOrDefault(m => m.TmdbId == addMedia.TmdbId);
            List <Genre> dbGenres = _context.Genres.ToList();

            if (media == null)
            {
                MediaType mediaType = _context.MediaTypes.SingleOrDefault(m => m.Name == SpinningFilmHelper.MovieType);

                string responseBody = await _apiService.GetWithCreditsAsync(addMedia.TmdbId, SpinningFilmHelper.MovieType);

                TmdbMovieResult movieResult = JsonConvert.DeserializeObject <TmdbMovieResult>(responseBody);

                responseBody = await _apiService.GetOmdbResult(movieResult.ImdbId);

                RatingResult ratingResult = JsonConvert.DeserializeObject <RatingResult>(responseBody);

                media = new Media(movieResult, mediaType, ratingResult, movieResult.ImdbId);
                _context.Add(media);

                Movie movie = new Movie(movieResult, media.MediaId);
                _context.Add(movie);

                foreach (var item in movieResult.Genres)
                {
                    var        genre      = dbGenres.SingleOrDefault(g => g.GenreId == item.GenreId) ?? _context.Genres.Add(item).Entity;
                    MediaGenre mediaGenre = new MediaGenre(media.MediaId, genre);
                    _context.Add(mediaGenre);
                }

                movieResult.Credits.Cast.ForEach(c => c.MediaId = media.MediaId);
                _context.Casts.AddRange(movieResult.Credits.Cast);

                movieResult.Credits.Crew.ForEach(c => c.MediaId = media.MediaId);
                _context.Crews.AddRange(movieResult.Credits.Crew);

                _context.SaveChanges();
            }

            Guid userId = User.Identity.GetNameIdGuid();

            if (!_context.PhysicalMedias.Any(m => m.AppUserId == userId && m.MediaId == media.MediaId))
            {
                PhysicalMedia physicalMedia = new PhysicalMedia(media.MediaId, userId, (bool)addMedia.DigitalCopy, addMedia.DiscType);
                _context.PhysicalMedias.Add(physicalMedia);

                foreach (var genreId in addMedia.ExtraGenreIds)
                {
                    var        genre      = dbGenres.SingleOrDefault(g => g.GenreId == genreId);
                    ExtraGenre extraGenre = new ExtraGenre(physicalMedia.PhysicalMediaId, genre);
                    _context.Add(extraGenre);
                }

                _context.SaveChanges();

                return(View("AddMedia", media));
            }

            return(RedirectToAction("Index", "Home"));
        }
Пример #2
0
        public async Task <IActionResult> AddSeries(AddSeriesViewModel addSeries)
        {
            Media media = _context.Medias.SingleOrDefault(m => m.ImdbId == addSeries.ImdbId);

            if (media == null)
            {
                MediaType mediaType = _context.MediaTypes.SingleOrDefault(m => m.Name == SpinningFilmHelper.SeriesType);

                string responseBody = await _apiService.GetWithCreditsAsync(addSeries.TmdbId, SpinningFilmHelper.SeriesType);

                TmdbTVResult tvResult = JsonConvert.DeserializeObject <TmdbTVResult>(responseBody);

                responseBody = await _apiService.GetOmdbResult(addSeries.ImdbId);

                RatingResult ratingResult = JsonConvert.DeserializeObject <RatingResult>(responseBody);

                media = new Media(tvResult, mediaType, ratingResult, addSeries.ImdbId);
                _context.Add(media);

                Series series = new Series(tvResult, media.MediaId);
                _context.Add(series);

                List <Genre> dbGenres = _context.Genres.ToList();
                foreach (var item in tvResult.Genres)
                {
                    var        genre      = dbGenres.SingleOrDefault(g => g.GenreId == item.GenreId) ?? _context.Genres.Add(item).Entity;
                    MediaGenre mediaGenre = new MediaGenre(media.MediaId, genre);
                    _context.Add(mediaGenre);
                }

                tvResult.Credits.Cast.ForEach(c => c.MediaId = media.MediaId);
                _context.Casts.AddRange(tvResult.Credits.Cast);

                tvResult.Credits.Crew.ForEach(c => c.MediaId = media.MediaId);
                _context.Crews.AddRange(tvResult.Credits.Crew);

                _context.SaveChanges();
            }

            if (!_context.PhysicalMedias.Any(m => m.AppUserId == User.Identity.GetNameIdGuid() && m.MediaId == media.MediaId))
            {
                foreach (var number in addSeries.SeasonNumbers)
                {
                    var physicalMedia = addSeries.PhysicalMedias[number - 1];
                    physicalMedia.MediaId   = media.MediaId;
                    physicalMedia.AppUserId = User.Identity.GetNameIdGuid();
                    _context.PhysicalMedias.Add(physicalMedia);

                    PhysicalSeason physicalSeason = new PhysicalSeason(physicalMedia.PhysicalMediaId, number);
                    _context.PhysicalSeasons.Add(physicalSeason);
                }

                _context.SaveChanges();

                return(View("AddMedia", media));
            }

            return(RedirectToAction("Index", "Home"));
        }
Пример #3
0
        public IActionResult PostGenre(MediaGenre obj)
        {
            if (obj == null)
            {
                return(BadRequest());
            }

            _context.MediaGenre.Add(obj);
            _context.SaveChanges();

            var model = new MediaGenre
            {
                GenreID = obj.GenreID,
                MediaID = obj.MediaID
            };

            return(Ok(model));
        }
Пример #4
0
        static void Seed(MovieDatabaseDbContext ctx)
        {
            Media m1 = new Media
            {
                Id          = 1,
                Title       = "Iron man",
                ReleaseDate = 2008,
                WatchDate   = new DateTime(2015, 1, 5),
                MediaGenres = new List <MediaGenre>(),
                ActorActs   = new List <ActorAct>()
            };
            Media m2 = new Media
            {
                Id          = 2,
                Title       = "The Wolf of Wallstreet",
                ReleaseDate = 2013,
                WatchDate   = new DateTime(2017, 4, 14),
                MediaGenres = new List <MediaGenre>(),
                ActorActs   = new List <ActorAct>()
            };
            Media m3 = new Media
            {
                Id          = 3,
                Title       = "Captain America: Civil War",
                ReleaseDate = 2016,
                WatchDate   = new DateTime(2017, 1, 9),
                MediaGenres = new List <MediaGenre> {
                    new MediaGenre(), new MediaGenre()
                },
                ActorActs = new List <ActorAct>()
            };
            Media m4 = new Media
            {
                Id          = 4,
                Title       = "Terminator",
                ReleaseDate = 1984,
                WatchDate   = new DateTime(2018, 5, 5),
                MediaGenres = new List <MediaGenre> {
                    new MediaGenre(), new MediaGenre()
                },
                ActorActs = new List <ActorAct>()
            };
            Media m5 = new Media
            {
                Id          = 5,
                Title       = "Vikings - season 1 - 4",
                MediaGenres = new List <MediaGenre> {
                    new MediaGenre(), new MediaGenre()
                },
                ActorActs = new List <ActorAct>()
            };
            Media m6 = new Media
            {
                Id          = 7,
                Title       = "Game of Thrones - season 1-7",
                MediaGenres = new List <MediaGenre> {
                    new MediaGenre(), new MediaGenre()
                },
                ActorActs = new List <ActorAct>()
            };
            ActorAct aa1 = new ActorAct {
                Actor = new Actor {
                    Name = "Robert Downey Jr"
                }, Media = m1
            };
            ActorAct aa2 = new ActorAct {
                Actor = new Actor {
                    Name = "Terrence Howard"
                }, Media = m1
            };
            ActorAct aa3 = new ActorAct {
                Actor = new Actor {
                    Name = "Scarlett Johanson"
                }, Media = m3
            };
            ActorAct aa4 = new ActorAct {
                Actor = new Actor {
                    Name = "Travis Fimmel"
                }, Media = m5
            };

            /*
             * m1.ActorActs.Add(aa1);
             * m1.ActorActs.Add(aa2);
             * m3.ActorActs.Add(aa3);
             * m5.ActorActs.Add(aa4);
             */

            MediaGenre mg1 = new MediaGenre {
                Genre = Genre.ScienceFiction, Id = 1, Media = m1
            };
            MediaGenre mg2 = new MediaGenre {
                Genre = Genre.Action, Id = 2, Media = m1
            };
            MediaGenre mg3 = new MediaGenre {
                Genre = Genre.Horror, Id = 3, Media = m2
            };

            m1.MediaGenres = new List <MediaGenre> {
                mg1, mg2
            };
            m2.MediaGenres = new List <MediaGenre> {
                mg3
            };

            ctx.Media.AddRange(m1, m2, m3, m4, m5, m6);
            ctx.ActorActs.AddRange(aa1, aa2, aa3, aa4);
            ctx.SaveChanges();
        }
        public static string MediaGenreToString(MediaGenre genre)
        {
            switch (genre)
            {
            case MediaGenre.Unknown:               return(MediaGenre.Unknown.ToString());

            case MediaGenre.Action:                return(MediaGenre.Action.ToString());

            case MediaGenre.Adventure:             return(MediaGenre.Adventure.ToString());;

            case MediaGenre.AnimeInfluenced:       return("Anime Influenced");

            case MediaGenre.Cars:                  return(MediaGenre.Cars.ToString());

            case MediaGenre.Comedy:                return(MediaGenre.Comedy.ToString());

            case MediaGenre.Dementia:              return(MediaGenre.Dementia.ToString());

            case MediaGenre.Demons:                return(MediaGenre.Demons.ToString());

            case MediaGenre.Drama:                 return(MediaGenre.Drama.ToString());

            case MediaGenre.Ecchi:                 return(MediaGenre.Ecchi.ToString());

            case MediaGenre.Fantasy:               return(MediaGenre.Fantasy.ToString());

            case MediaGenre.Game:                  return(MediaGenre.Game.ToString());

            case MediaGenre.Harem:                 return(MediaGenre.Harem.ToString());

            case MediaGenre.Historical:            return(MediaGenre.Historical.ToString());

            case MediaGenre.Horror:                return(MediaGenre.Horror.ToString());

            case MediaGenre.Kids:                  return(MediaGenre.Kids.ToString());

            case MediaGenre.Magic:                 return(MediaGenre.Magic.ToString());

            case MediaGenre.MartialArts:           return("Martial Arts");

            case MediaGenre.Mecha:                 return(MediaGenre.Mecha.ToString());

            case MediaGenre.Military:              return(MediaGenre.Military.ToString());

            case MediaGenre.Music:                 return(MediaGenre.Music.ToString());

            case MediaGenre.Mystery:               return(MediaGenre.Mystery.ToString());

            case MediaGenre.Parody:                return(MediaGenre.Parody.ToString());

            case MediaGenre.Psychological:         return(MediaGenre.Psychological.ToString());

            case MediaGenre.Romance:               return(MediaGenre.Romance.ToString());

            case MediaGenre.Samurai:               return(MediaGenre.Samurai.ToString());

            case MediaGenre.School:                return(MediaGenre.School.ToString());

            case MediaGenre.SciFi:                 return(MediaGenre.SciFi.ToString());

            case MediaGenre.ShoujoAi:              return("Shoujo Ai");

            case MediaGenre.ShounenAi:             return("Shounen Ai");

            case MediaGenre.SliceOfLife:           return("Slice Of Life");

            case MediaGenre.Space:                 return(MediaGenre.Space.ToString());

            case MediaGenre.Sports:                return(MediaGenre.Sports.ToString());

            case MediaGenre.Supernatural:          return(MediaGenre.Supernatural.ToString());

            case MediaGenre.SuperPower:            return("Super Power");

            case MediaGenre.Thriller:              return(MediaGenre.Thriller.ToString());

            case MediaGenre.Vampire:               return(MediaGenre.Vampire.ToString());

            case MediaGenre.None:
            default:                               return("");
            }
        }
Пример #6
0
        private async void BtnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                int.Parse(txtBudget.Text);
                double.Parse(txtBoxOffice.Text);
            }
            catch
            {
                MessageBox.Show("Both the budget and box office amount must be numbers!", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (txtTitle.Text == "" || txtSynopsis.Text == "" ||
                txtDirector.Text == "" || txtBoxOffice.Text == "" || txtBudget.Text == "")
            {
                MessageBox.Show("Please enter all the required fields", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (dropCountry.SelectedIndex == -1 || dropLanguage.SelectedIndex == -1 ||
                dropGenre.SelectedIndex == -1 || dropStudio.SelectedIndex == -1)
            {
                MessageBox.Show("Make sure you assigned the country, studio, genre and a language to the movie you're adding!", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            int width  = NewCoverImage.Width;
            int height = NewCoverImage.Height;

            if (!((width == 300 && height == 450) ||
                  (width == 512 && height == 768) ||
                  (width == 800 && height == 1200)))
            {
                MessageBox.Show("The film cover's resolution is disallowed! Please try another image.", "Error",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }


            var model = new MediaInputModel
            {
                Title          = txtTitle.Text,
                Synopsis       = txtSynopsis.Text,
                Director       = txtDirector.Text,
                ReleaseDate    = dateRelease.Value,
                Budget         = int.Parse(txtBudget.Text),
                WorldwideGross = double.Parse(txtBoxOffice.Text),
                GenreID        = dropGenre.SelectedIndex + 1,
                CountryID      = dropCountry.SelectedIndex + 1,
                LanguageID     = dropLanguage.SelectedIndex + 1,
                StudioID       = dropStudio.SelectedIndex + 1,
                RatingID       = 1 // G default rating
            };

            var returns = await _mediaService.Insert <Media>(model);

            // Genre
            MediaGenre mediaGenre = new MediaGenre
            {
                MediaID = returns.MediaID,
                GenreID = model.GenreID
            };

            await $"{Properties.Settings.Default.APIUrl}/MediaContent/Genres"
            .WithBasicAuth(APIService.Username, APIService.Password)
            .PostJsonAsync(mediaGenre);

            // Country
            MediaCountry mediaCountry = new MediaCountry
            {
                MediaID   = returns.MediaID,
                CountryID = model.CountryID
            };

            await $"{Properties.Settings.Default.APIUrl}/MediaContent/Countries"
            .WithBasicAuth(APIService.Username, APIService.Password)
            .PostJsonAsync(mediaCountry);

            // Language
            MediaLanguage mediaLanguage = new MediaLanguage
            {
                MediaID    = returns.MediaID,
                LanguageID = model.LanguageID
            };

            await $"{Properties.Settings.Default.APIUrl}/MediaContent/Languages"
            .WithBasicAuth(APIService.Username, APIService.Password)
            .PostJsonAsync(mediaLanguage);

            // Copy newly added avatar to Assets/Avatars
            string coverLocation = await $"{Properties.Settings.Default.APIUrl}/info/covers".GetStringAsync();
            string fileName      = "";

            try
            {
                fileName = Path.GetFileName(Cover.FileName);
            }
            catch
            {
                fileName = "Default.png";
            }

            if (fileName != "Default.png" && fileName != "")
            {
                System.IO.File.Copy(Cover.FileName, $@"{coverLocation}\{fileName}");
            }
            else if (fileName == "")
            {
                fileName = "Default.png";
            }
            model.CoverLocation = $"/Assets/Covers/{fileName}";

            Models.Image cover = new Models.Image
            {
                Location = model.CoverLocation,
                MediaID  = returns.MediaID
            };
            var imgReturns = await _imagesService.Insert <Models.Image>(cover);

            MessageBox.Show("Media added successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }