/// <summary> /// Добавить новый эпизод /// </summary> public void AddEpisode() { if (CanAddEpisode is false) { return; } using (var ctx = new CVDbContext(AppDataPath)) { var cartoon = ctx.Cartoons .Include(c => c.CartoonVoiceOvers) .First(c => c.CartoonId == GlobalIdList.CartoonId); if (cartoon.CartoonVoiceOvers.Count == 0) { WinMan.ShowDialog(new DialogViewModel( "У выбранного мультсериала отсутствуют озвучки, добавьте одну или более для создания нового эпизода", DialogType.INFO)); return; } // загрузка первой озвучки выбранного м/с CartoonVoiceOver voiceOver; if (DefaultVoiceOver == null) { voiceOver = ctx.Cartoons .Include(ce => ce.CartoonVoiceOvers) .First(c => c.CartoonId == GlobalIdList.CartoonId).CartoonVoiceOvers.First(); } else { voiceOver = ctx.VoiceOvers .First(vo => vo.CartoonVoiceOverId == DefaultVoiceOver.CartoonVoiceOverId); } var episode = CreateNewEpisode(ctx, voiceOver); CreateNewEpisodeOption(ctx, episode, voiceOver); episode = ctx.CartoonEpisodes.ToList().Last(); Episodes.Add(episode); NotifyOfPropertyChange(() => Episodes); } SelectedEpisode = Episodes.LastOrDefault(); EpisodeIndexes.CurrentIndex = Episodes.IndexOf(SelectedEpisode); EpisodeIndexes.EndIndex = Episodes.IndexOf(SelectedEpisode); NotifyOfPropertyChange(() => CanEditNextEpisode); NotifyOfPropertyChange(() => CanEditPreviousEpisode); }
/// <summary> /// Удалить выбранный эпизод /// </summary> public void RemoveEpisode() { if (CanRemoveEpisode is false) { return; } RemoveEpisodeFromDb(); Episodes.Remove(SelectedEpisode); NotifyOfPropertyChange(() => Episodes); SelectedEpisode = Episodes.LastOrDefault(); }
/// <summary> /// Добавить эпизоды /// </summary> public void AddEpisodes() { var number = Episodes.Count; var lastNumber = Episodes.LastOrDefault()?.Number ?? 0; var episodes = new List <Episode>(); var name = $"{TranslateFileName(ESVM.SelectedFilm.Name)}_S{CurrentSeason.Number}_E"; for (var i = 0; i < AddingEpisodeValue; i++) { if (number > 0 && number != lastNumber) { for (var j = 1; j <= lastNumber; j++) { if (Episodes.Any(e => e.Number == j) || episodes.Any(e => e.Number == j)) { continue; } episodes.Add(new Episode { Name = name + j, Number = j, Season = CurrentSeason, Film = ESVM.SelectedFilm }); lastNumber++; break; } continue; } episodes.Add(new Episode { Name = name + ++number, Number = number, Season = CurrentSeason, Film = ESVM.SelectedFilm, }); lastNumber++; } InsertEntityListToDb(episodes); Episodes = new BindableCollection <Episode>(CurrentSeason.Episodes); SelectedEpisode = Episodes.LastOrDefault(); }