private void GenreSelectionChangedHandler(GenreSelection genreSelection) { MovieGenre movieGenre = Movie.MovieGenres.Where(mg => mg.Genre.Id == genreSelection.Genre.Id).FirstOrDefault(); if (genreSelection.Selected) { if (movieGenre == null) { movieGenre = MovieGenre.CreateNew <MovieGenre>(); movieGenre.Genre = genreSelection.Genre; movieGenre.Movie = Movie; Movie.MovieGenres.Add(movieGenre); OnGenreSelectionChanged?.Invoke(genreSelection); } else if (movieGenre.IsDeleted) { movieGenre.IsDeleted = false; } } else if (movieGenre != null) { // Wird ein Genre abgewählt, dass noch nicht gespeichert war, kann es einfach aus der Liste entfernt werden. // War es schon gespeichert, muss es auf Deleted gesetzt werden, damit das Delete in der DB stattfinden kann. if (movieGenre.IsNew) { Movie.MovieGenres.Remove(movieGenre); } else { movieGenre.IsDeleted = true; } OnGenreSelectionChanged?.Invoke(genreSelection); } }
private GenreSelection CreateGenreSelection(Genre genre) { GenreSelection genreSelection = new GenreSelection() { Genre = genre, Selected = Movie != null?Movie.MovieGenres.Any(mg => mg.Genre.Id == genre.Id && !mg.IsDeleted) : false }; return(genreSelection); }