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")); }
public AddSeriesToDatabase(AddSeriesViewModel main) { if (main == null) { throw new ArgumentNullException("AddToDatabase command"); } this.main = main; }
public AbortSearch(AddSeriesViewModel main) { if (main == null) { throw new ArgumentNullException("AbortSearch command"); } this.main = main; }
//Zwraca wyszukane seriale, w tym ich: ID, tytuł, opis, najnowszy plakat public ObservableCollection <Series> SearchForSeries(string title, AddSeriesViewModel main) { string JSON = getReply("https://api.thetvdb.com/search/series?name=" + title); ObservableCollection <Series> _series = new ObservableCollection <Series>(); try { JObject tvdbSearch = JObject.Parse(JSON); IList <JToken> results = tvdbSearch["data"].Children().ToList(); int _found = 0; foreach (JToken result in results) { Series searchResult = result.ToObject <Series>(); byte[] poster; if ((poster = SearchForPosters(searchResult._id)) != null) { searchResult._poster = poster; } _series.Add(searchResult); if (main.AbortSearch) // Jak naciśnięty przycisk AbortSearch { main.AbortSearch = false; return(_series); } main.FoundSeries = ++_found; } } catch (Exception) { MessageBox.Show("Nie znalazłem pasujących seriali", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } return(_series); }
public async Task <IActionResult> AddSeriesModal(AddSeriesViewModel addSeries) { string responseBody = await _apiService.GetWithExternalIdsAsync(addSeries.TmdbId, SpinningFilmHelper.SeriesType); TmdbTVResult result = JsonConvert.DeserializeObject <TmdbTVResult>(responseBody); addSeries.ImdbId = result.ExternalIds.ImdbId; addSeries.Title = result.Name; addSeries.DiscTypes = _context.DiscTypes.ToList(); addSeries.Poster = TmdbSettings.PosterSmall + result.Poster; addSeries.NumberOfSeasons = result.NumberOfSeasons; Media media = _context.Medias.SingleOrDefault(m => m.ImdbId == addSeries.ImdbId) ?? new Media(); Guid userId = User.Identity.GetNameIdGuid(); for (int i = 0; i < addSeries.NumberOfSeasons; i++) { addSeries.PhysicalMedias.Add(new PhysicalMedia(media.MediaId, userId)); } return(View(addSeries)); }
//Wyszukuje plakaty i dodaje je odrazu do _PosterList public void SearchForAllPosters(int _seriesID, AddSeriesViewModel main) { string JSON = getReply("https://api.thetvdb.com/series/" + _seriesID + "/images/query?keyType=poster"); if (JSON != null) { JObject tvdbSearch = JObject.Parse(JSON); IList <JToken> results = tvdbSearch["data"].Children().ToList(); foreach (JToken result in results) { Poster p = result.ToObject <Poster>(); byte[] array; using (WebClient client = new WebClient()) { array = client.DownloadData(new Uri("http://thetvdb.com/banners/" + p.fileName)); } Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() => main.PosterList.Add(new Poster(array)))); } } }
public AddSeriesWindow() { InitializeComponent(); _viewModel = new AddSeriesViewModel(); this.DataContext = _viewModel; }