/// <summary> /// Удалить выбранную озвучку из списка глобальных озвучек /// </summary> private void RemoveVoiceOverFromGlobalList() { var globalVoiceOver = GlobalVoiceOvers .First(gvo => gvo.CartoonVoiceOverId == SelectedVoiceOverId); GlobalVoiceOvers.Remove(globalVoiceOver); NotifyOfPropertyChange(() => CartoonVoiceOvers); }
/// <summary> /// Копировать выбранную глобальную озвучку в текущий м/ф /// </summary> public void MoveToCartoonVoiceOvers() { if (CanMoveToCartoonVoiceOvers is false) { return; } if (SelectedVoiceOverId == 0) { throw new Exception("Id выбраной озвучки м/ф равен 0"); } if (CartoonVoiceOvers.Any(cvo => cvo.CartoonVoiceOverId == SelectedVoiceOverId)) { SelectedCartoonVoiceOver = CartoonVoiceOvers .First(cvo => cvo.CartoonVoiceOverId == SelectedVoiceOverId); return; } using (var ctx = new CVDbContext(AppDataPath)) { var cartoon = ctx.Cartoons .Include(c => c.CartoonVoiceOvers) .Single(c => c.CartoonId == IdList.CartoonId); ctx.VoiceOvers .Include(vo => vo.Cartoons) .Single(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId) .Cartoons.Add(cartoon); ctx.SaveChanges(); } var voiceOver = GlobalVoiceOvers.First(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId); CartoonVoiceOvers.Add(voiceOver); NotifyOfPropertyChange(() => EpisodeVoiceOvers); SelectedCartoonVoiceOver = voiceOver; NotifyOfPropertyChange(() => SelectedCartoonVoiceOver); }
/// <summary> /// Копировать выбранную озвучку м/ф в текущий эпизод /// </summary> public void MoveToEpisodeVoiceOvers() { if (CanMoveToEpisodeVoiceOvers is false) { return; } if (SelectedVoiceOverId == 0) { throw new Exception("Id выбраной озвучки м/ф равен 0"); } using (var ctx = new CVDbContext(AppDataPath)) { var episode = ctx.CartoonEpisodes .Include(ce => ce.EpisodeVoiceOvers) .Single(ce => ce.CartoonEpisodeId == IdList.EpisodeId); var episodeOption = new EpisodeOption { CartoonEpisodeId = episode.CartoonEpisodeId, CartoonVoiceOverId = SelectedVoiceOverId, Name = $"{SelectedGlobalVoiceOver.Name}_Option" }; ctx.EpisodeOptions.Add(episodeOption); ctx.SaveChanges(); episodeOption = ctx.EpisodeOptions.ToList().Last(); // создание нового джампера var jumper = new Jumper { EpisodeOptionId = episodeOption.EpisodeOptionId, Number = 1 }; ctx.Jumpers.Add(jumper); ctx.SaveChanges(); episodeOption = ctx.EpisodeOptions .Include(eo => eo.Jumpers) .ToList().Last(); var totalSkipCount = episodeOption.Jumpers.Sum(j => j.SkipCount); var duration = episodeOption.CreditsStart - new TimeSpan(0, 0, totalSkipCount * 5); episodeOption.Duration = duration; ctx.SaveChanges(); if (episode.EpisodeVoiceOvers.Count == 0) { ctx.VoiceOvers .Include(vo => vo.CheckedEpisodes) .Single(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId) .CheckedEpisodes.Add(episode); } ctx.VoiceOvers .Include(vo => vo.CartoonEpisodes) .Single(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId) .CartoonEpisodes.Add(episode); ctx.SaveChanges(); } var voiceOver = GlobalVoiceOvers.First(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId); EpisodeVoiceOvers.Add(voiceOver); NotifyOfPropertyChange(() => EpisodeVoiceOvers); SelectedEpisodeVoiceOver = voiceOver; }