/// <summary> /// Добавить новый джампер /// </summary> public void AddJumper() { if (CanAddJumper is false) { return; } if (HasChangesValidation() is false) { return; } var count = Jumpers.Count + 1; var optionId = SelectedEpisodeOption.EpisodeOptionId; var jumper = new Jumper { EpisodeOptionId = optionId, Number = count }; Jumpers.Add(jumper); SelectedEpisodeOption.Jumpers.Add(Jumpers.Last()); AddJumperToDb(jumper); SelectedJumper = Jumpers.Last(); EditableEpisodeTime = ConvertToEpisodeTime(SelectedEpisodeOption, SelectedJumper); TempEpisodeOptionSnapshot = JsonConvert.SerializeObject(SelectedEpisodeOption); NotifyOfPropertyChange(() => Jumpers); NotifyOfPropertyChange(() => SelectedEpisodeOption); NotifyOfPropertyChange(() => CanRemoveJumper); NotifyOfPropertyChange(() => EpisodeDuration); NotifyEditingButtons(); }
/// <summary> /// Импорт настроек опции /// </summary> public void ImportOptionData() { if (CanImportOptionData is false) { return; } using (var ctx = new CVDbContext(AppDataPath)) { var option = ctx.EpisodeOptions .Include(eo => eo.Jumpers) .First(eo => eo.EpisodeOptionId == SelectedEpisodeOption.EpisodeOptionId); if (option == null) { throw new Exception("Опция не существует"); } foreach (var jumper in option.Jumpers.ToList()) { ctx.Jumpers.Remove(jumper); ctx.SaveChanges(); } Jumpers.Clear(); SelectedEpisodeOption.Jumpers.Clear(); var count = 1; foreach (var j in ImportingEpisodeOption.Jumpers) { var jumper = new Jumper { EpisodeOptionId = SelectedEpisodeOption.EpisodeOptionId, StartTime = j.StartTime, SkipCount = j.SkipCount, Number = count++ }; option.Jumpers.Add(jumper); ctx.SaveChanges(); jumper = ctx.Jumpers.ToList().Last(); Jumpers.Add(jumper); SelectedEpisodeOption.Jumpers.Add(jumper); } option.CreditsStart = ImportingEpisodeOption.CreditsStart; SelectedEpisodeOption.CreditsStart = ImportingEpisodeOption.CreditsStart; option.Duration = CalculatingDuration(option); SelectedEpisodeOption.Duration = CalculatingDuration(option); SelectedJumper = Jumpers.First(); EditableEpisodeTime = ConvertToEpisodeTime(SelectedEpisodeOption, SelectedJumper); ctx.SaveChanges(); TempEpisodeOptionSnapshot = JsonConvert.SerializeObject(SelectedEpisodeOption); NotifyOfPropertyChange(() => SelectedEpisodeOption); NotifyOfPropertyChange(() => Jumpers); NotifyOfPropertyChange(() => CanImportOptionData); NotifyEditingButtons(); NotifyTimeProperties(); } }