public async Task AddMovie(int id) { try { var movie = await Client.GetMovieAsync(id, MovieMethods.Credits); string date; if (movie.ReleaseDate == null) { date = "No info available"; } else { date = ((DateTime)movie.ReleaseDate).ToString("dd.MM.yyyy"); } string image = "no_poster.jpg"; if (Settings.Instance.DownloadImages) { image = Client.GetImageUrl("w500", movie.PosterPath).ToString(); } Film film = new Film(movie.Title, (short)movie.Runtime, date, movie.Overview, image); foreach (var actor in movie.Credits.Cast) { string name = actor.Name; foreach (var existingActor in ActorCollection.Instance.Actors.Where(a => a.Name == name)) { film.AddActor(existingActor); } } foreach (var producer in movie.Credits.Crew) { string name = producer.Name; foreach (var existingProducer in ProducerCollection.Instance.Producers.Where (p => p.Name == name && producer.Job == "Director")) { film.AddProducer(existingProducer); } } foreach (var genre in movie.Genres) { foreach (var g in Enum.GetValues(typeof(Genres))) { if (((Genres)g).ToString() == genre.Name.Replace(" ", "")) { film.GenresList.Add((Genres)g); } } } FilmCollection.Instance.Films.Add(film); UserDialogs.Instance.Toast("Success!"); } catch (HttpRequestException) { UserDialogs.Instance.Toast("Network Error"); } catch (Exception) { UserDialogs.Instance.Toast("Ooops! Something went wrong!"); } }