示例#1
0
        /// <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);
        }
示例#2
0
        /// <summary>
        /// Добавить новый джампер в БД
        /// </summary>
        /// <param name="jumper">добавляемый джампер</param>
        private void AddJumperToDb(Jumper jumper)
        {
            using (var ctx = new CVDbContext(AppDataPath))
            {
                ctx.EpisodeOptions
                .First(eo => eo.EpisodeOptionId == SelectedEpisodeOption
                       .EpisodeOptionId).Duration = CalculatingDuration();
                ctx.Jumpers.Add(jumper);
                ctx.SaveChanges();

                Jumpers.Last().JumperId = ctx.Jumpers.ToList().Last().JumperId;
                NotifyOfPropertyChange(() => Jumpers);
            }
        }
示例#3
0
        /// <summary>
        /// Загрузка из БД списка сезонов
        /// </summary>
        private void LoadSeasonList()
        {
            BindableCollection <CartoonSeason> seasons;

            using (var ctx = new CVDbContext(SettingsHelper.AppDataPath))
            {
                ctx.CartoonSeasons
                .Where(cs => cs.CartoonId == SettingsHelper.GlobalIdList.CartoonId)
                .Load();
                seasons = new BindableCollection <CartoonSeason>(ctx.CartoonSeasons.Local);
            }

            Seasons = new BindableCollection <CartoonSeason>(seasons);
        }
示例#4
0
        /// <summary>
        /// Загрузка данных сезона
        /// </summary>
        private void LoadSeasonData()
        {
            List <CartoonEpisode> episodes;

            using (var ctx = new CVDbContext(AppDataPath))
            {
                episodes = ctx.CartoonEpisodes
                           .Include(ce => ce.EpisodeVoiceOvers)
                           .Where(ce => ce.CartoonSeasonId == GlobalIdList.SeasonId).ToList();
            }

            Episodes = new BindableCollection <CartoonEpisode>(episodes);

            SelectedEpisode = Episodes.FirstOrDefault();
        }
示例#5
0
        /// <summary>
        /// Загрузка списка озвучек выбранного эпизода из БД
        /// </summary>
        private void LoadEpisodeVoiceOverList()
        {
            BindableCollection <CartoonVoiceOver> voiceOvers;

            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                ctx.VoiceOvers
                .Where(vo => vo.CartoonEpisodes
                       .Any(ce => ce.CartoonEpisodeId == IdList.EpisodeId))
                .Load();
                voiceOvers = new BindableCollection <CartoonVoiceOver>(ctx.VoiceOvers.Local);
            }

            EpisodeVoiceOvers = new BindableCollection <CartoonVoiceOver>(voiceOvers);
        }
示例#6
0
        /// <summary>
        /// Обновить список озвучек м/с
        /// </summary>
        public void UpdateCartoonVoiceOvers()
        {
            if (GlobalIdList.CartoonId == 0)
            {
                return;
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                var voiceOvers = ctx.VoiceOvers
                                 .Where(vo => vo.Cartoons.Any(c => c.CartoonId == GlobalIdList.CartoonId));

                CartoonVoiceOvers = new BindableCollection <CartoonVoiceOver>(voiceOvers);
            }
        }
示例#7
0
        /// <summary>
        /// Удалить выбранную озвучку текущего эпизода из БД
        /// </summary>
        private void RemoveSelectedEpisodeVoiceOverFromDb()
        {
            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                var episode = ctx.CartoonEpisodes
                              .Include(ce => ce.EpisodeVoiceOvers)
                              .Single(ce => ce.CartoonEpisodeId == IdList.EpisodeId);

                ctx.VoiceOvers
                .Include(vo => vo.CartoonEpisodes)
                .Single(vo => vo.CartoonVoiceOverId == SelectedVoiceOverId)
                .CartoonEpisodes.Remove(episode);
                ctx.SaveChanges();
            }
        }
示例#8
0
        /// <summary>
        /// Загрузка из базы данны списка сезонов выбранного мультсериала
        /// </summary>
        private void LoadSeasonList()
        {
            BindableCollection <CartoonSeason> seasons;

            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                seasons = new BindableCollection <CartoonSeason>(ctx.CartoonSeasons
                                                                 .Where(cs => cs.CartoonId ==
                                                                        IdList.CartoonId));
            }

            Seasons = new BindableCollection <CartoonSeason>(seasons);
            SeasonIndexes.EndIndex = Seasons.Count - 1;
            NotifyOfPropertyChange(() => CanSelectNextSeason);
            NotifyOfPropertyChange(() => CanSelectPreviousSeason);
        }
示例#9
0
        /// <summary>
        /// Удалить выбранный эпизод из БД
        /// </summary>
        private void RemoveEpisodeFromDb()
        {
            using (var ctx = new CVDbContext(AppDataPath))
            {
                var episode = ctx.CartoonEpisodes
                              .FirstOrDefault(ce => ce.CartoonEpisodeId == GlobalIdList.EpisodeId);

                if (episode == null)
                {
                    throw new Exception("Удаляемый эпизод не найден");
                }

                ctx.CartoonEpisodes.Remove(episode);
                ctx.SaveChanges();
            }
        }
示例#10
0
        /// <summary>
        /// Загрузка из базы данных списка мультсериалов по ID сайта
        /// </summary>
        private void LoadCartoonList()
        {
            BindableCollection <Cartoon> cartoons;

            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                cartoons = new BindableCollection <Cartoon>(ctx.Cartoons
                                                            .Where(c => c.CartoonWebSites
                                                                   .Any(cws => cws.CartoonWebSiteId ==
                                                                        IdList.WebSiteId)));
            }

            Cartoons = new BindableCollection <Cartoon>(cartoons);
            CartoonIndexes.EndIndex = Cartoons.Count - 1;
            NotifyOfPropertyChange(() => CanSelectNextCartoon);
            NotifyOfPropertyChange(() => CanSelectPreviousCartoon);
        }
示例#11
0
        /// <summary>
        /// Загрузка из базы данных списка эпизодов выбранного сезона
        /// </summary>
        private void LoadEpisodeList()
        {
            BindableCollection <CartoonEpisode> episodes;

            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                episodes = new BindableCollection <CartoonEpisode>(ctx.CartoonEpisodes
                                                                   .Where(ce => ce.CartoonSeasonId ==
                                                                          IdList.SeasonId)
                                                                   .ToList());
            }

            Episodes = new BindableCollection <CartoonEpisode>(episodes);

            EpisodeIndexes.EndIndex = Episodes.Count - 1;
            NotifyOfPropertyChange(() => CanSelectNextEpisode);
            NotifyOfPropertyChange(() => CanSelectPreviousEpisode);
        }
示例#12
0
        private void SaveEpisodeOptionChanges(CVDbContext ctx)
        {
            var option = ctx.EpisodeOptions
                         .Include(eo => eo.Jumpers)
                         .First(eo => eo.EpisodeOptionId == SelectedEpisodeOption.EpisodeOptionId);

            SelectedEpisodeOption.Duration = EpisodeDuration;


            if (IsEquals(option, SelectedEpisodeOption) is false)
            {
                option.Duration     = SelectedEpisodeOption.Duration;
                option.CreditsStart = SelectedEpisodeOption.CreditsStart;

                ctx.Entry(option).State = EntityState.Modified;
                ctx.SaveChanges();
            }
        }
示例#13
0
        /// <summary>
        /// Удалить выбранный джампер из БД
        /// </summary>
        private void RemoveJumperFromDb()
        {
            using (var ctx = new CVDbContext(AppDataPath))
            {
                var jumper = ctx.Jumpers.First(j => j.JumperId == SelectedJumper.JumperId);

                ctx.Jumpers.Remove(jumper);
                ctx.SaveChanges();

                SelectedEpisodeOption.Jumpers.Remove(SelectedJumper);
                Jumpers.Remove(SelectedJumper);

                ctx.EpisodeOptions
                .First(eo => eo.EpisodeOptionId == SelectedEpisodeOption
                       .EpisodeOptionId).Duration = CalculatingDuration();
                ctx.SaveChanges();
            }
        }
示例#14
0
        public void UpdateVoiceOverList()
        {
            if (SettingsHelper.GlobalIdList.CartoonId == 0)
            {
                return;
            }

            Cartoon cartoon;

            using (var ctx = new CVDbContext(SettingsHelper.AppDataPath))
            {
                cartoon = ctx.Cartoons
                          .Include(c => c.CartoonVoiceOvers)
                          .Single(c => c.CartoonId == SettingsHelper.GlobalIdList.CartoonId);
            }

            VoiceOvers = new BindableCollection <CartoonVoiceOver>(cartoon.CartoonVoiceOvers);
        }
示例#15
0
        private void LoadData()
        {
            using (var ctx = new CVDbContext(AppDataPath))
            {
                GeneralSettings = LoadGeneralSettings();
                var episodes = ctx.CartoonEpisodes
                               .Include(ce => ce.CartoonVoiceOver)
                               .Include(ce => ce.CartoonSeason)
                               .Include(ce => ce.EpisodeOptions)
                               .Include(ce => ce.Cartoon)
                               .ToList();

                var cartoons = ctx.Cartoons
                               .Include(c => c.CartoonEpisodes)
                               .Where(c => c.CartoonEpisodes.Count > 0).ToList();

                Cartoons = new BindableCollection <Cartoon>(cartoons)
                {
                    new Cartoon {
                        Name = "всех"
                    }
                };
                Episodes = new BindableCollection <CartoonEpisode>(episodes);

                GeneralSettings.AvailableEpisodesCount =
                    ctx.CartoonEpisodes
                    .Include(ce => ce.CartoonVoiceOver)
                    .Include(ce => ce.CartoonSeason)
                    .Include(ce => ce.EpisodeOptions)
                    .Include(ce => ce.Cartoon)
                    .Where(ce => ce.Cartoon.Checked && ce.CartoonSeason.Checked)
                    .ToList().Count;


                WriteClassInFile(GeneralSettings, DefaultGeneralSettingsFileName, GeneralSettingsFileExtension, AppDataPath);

                GeneralSettings     = LoadGeneralSettings();
                TempGeneralSettings = CloneObject <GeneralSettingsValue>(GeneralSettings);

                NotifyOfPropertyChange(() => GeneralSettings);
                NotifyOfPropertyChange(() => CanSaveChanges);
                NotifyOfPropertyChange(() => CanCancelChanges);
            }
        }
示例#16
0
        /// <summary>
        /// Сохранить изменения
        /// </summary>
        public void SaveChanges()
        {
            if (CanSaveChanges is false)
            {
                return;
            }

            if (SelectedVoiceOverId == 0)
            {
                throw new Exception("Id выбраной озвучки м/ф равен 0");
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                var voiceOver = ctx.VoiceOvers.Find(SelectedVoiceOverId);

                var options =
                    ctx.EpisodeOptions.Where(eo => eo.CartoonVoiceOverId == EditedVoiceOver.CartoonVoiceOverId);

                if (voiceOver.Name != EditedVoiceOver.Name)
                {
                    foreach (var option in options)
                    {
                        option.Name             = $"{EditedVoiceOver.Name}_Option";
                        ctx.Entry(option).State = EntityState.Modified;
                    }
                }

                CopyChanges(ref voiceOver, EditedVoiceOver);

                ctx.Entry(voiceOver).State = EntityState.Modified;
                ctx.SaveChanges();
            }

            TempEditedVoiceOver = CloneObject <CartoonVoiceOver>(EditedVoiceOver);

            NotifyChanges();
            IsNotEditing = true;

            UpdateVoiceOverList();

            NotifyChanges();
        }
示例#17
0
        ///// <summary>
        ///// Измене выбор обмениваемого джампера
        ///// </summary>
        //public void SwappingJumperSelectionChanged()
        //{
        //	NotifyOfPropertyChange(() => CanDisableSwapping);
        //	NotifyOfPropertyChange(() => CanSwapJumpers);
        //}


        ///// <summary>
        ///// Включить режим обмена местами джамперов
        ///// </summary>
        //public void EnableSwapping()
        //{
        //	IsJumperSwapping = true;
        //	NotifyOfPropertyChange(() => CanEnableSwapping);
        //	NotifyOfPropertyChange(() => CanDisableSwapping);

        //}

        //public bool CanEnableSwapping => IsJumperSwapping is false;

        ///// <summary>
        ///// Поменять местами джампер
        ///// </summary>
        //public void SwapJumpers()
        //{
        //	if (CanSwapJumpers is false) return;

        //	Jumper temp;

        //	using (var ctx = new CVDbContext(AppDataPath))
        //	{
        //		var selJumper = ctx.Jumpers.Find(SelectedJumper.JumperId);
        //		var swapJumper = ctx.Jumpers.Find(SwappingJumper.JumperId);

        //		if (selJumper == null ||
        //		    swapJumper == null)
        //		{
        //			throw new Exception("Джампер не найден");
        //		}

        //		temp = CloneObject<Jumper>(selJumper);
        //		selJumper.StartTime = swapJumper.StartTime;
        //		selJumper.SkipCount = swapJumper.SkipCount;
        //		swapJumper.StartTime = temp.StartTime;
        //		swapJumper.SkipCount = temp.SkipCount;

        //		ctx.SaveChanges();
        //	}

        //	temp = CloneObject<Jumper>(SelectedJumper);
        //	SelectedJumper = CloneObject<Jumper>(SwappingJumper);
        //	SwappingJumper = CloneObject<Jumper>(temp);
        //	NotifyOfPropertyChange(() => CanSwapJumpers);
        //	NotifyOfPropertyChange(() => Jumpers);

        //}

        //public bool CanSwapJumpers
        //{
        //	get
        //	{
        //		if (SelectedJumper == null ||
        //		    SwappingJumper == null)
        //		{
        //			return false;
        //		}

        //		if (SelectedJumper.JumperId == SwappingJumper.JumperId ||
        //		    SelectedJumper.EndTime >= SwappingJumper.StartTime)
        //		{
        //			return false;
        //		}

        //		return true;
        //	}
        //}

        ///// <summary>
        ///// Выключить режим обмена местами джамперов
        ///// </summary>
        //public void DisableSwapping()
        //{
        //	IsJumperSwapping = false;
        //	NotifyOfPropertyChange(() => CanEnableSwapping);
        //	NotifyOfPropertyChange(() => CanDisableSwapping);
        //}

        //public bool CanDisableSwapping => IsJumperSwapping;

        #endregion

        #region Changes actions

        /// <summary>
        /// Сохранение данных
        /// </summary>
        public void SaveChanges()
        {
            if (CanSaveChanges is false)
            {
                return;
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                SaveEpisodeChanges(ctx);
                SaveJumpersChanges(ctx);
                SaveEpisodeOptionChanges(ctx);
            }

            TempEpisodeSnapshot       = JsonConvert.SerializeObject(EditableEpisode);
            TempEpisodeOptionSnapshot = JsonConvert.SerializeObject(SelectedEpisodeOption);

            NotifyEditingProperties();
        }
示例#18
0
        /// <summary>
        /// Сохранение изменений джамперов
        /// </summary>
        /// <param name="ctx"></param>
        private void SaveJumpersChanges(CVDbContext ctx)
        {
            var tempOption = JsonConvert.DeserializeObject <EpisodeOption>(TempEpisodeOptionSnapshot);
            var jumpers    = ctx.Jumpers.Where(j => j.EpisodeOptionId == tempOption.EpisodeOptionId).ToList();

            for (var i = 0; i < Jumpers.Count; i++)
            {
                if (IsEquals(jumpers[i], Jumpers[i]) is false)
                {
                    jumpers[i].SkipCount = Jumpers[i].SkipCount;
                    jumpers[i].StartTime = Jumpers[i].StartTime;

                    SelectedEpisodeOption.Jumpers[i] = Jumpers[i];

                    ctx.Entry(jumpers[i]).State = EntityState.Modified;
                    ctx.SaveChanges();
                }
            }

            ctx.SaveChanges();
        }
示例#19
0
        /// <summary>
        /// Создать новую озвучку в БД
        /// </summary>
        /// <returns></returns>
        private CartoonVoiceOver CreateNewVoiceOver()
        {
            using (var ctx = new CVDbContext(Helpers.SettingsHelper.AppDataPath))
            {
                var count = ctx.VoiceOvers.Max(vo => vo.CartoonVoiceOverId) + 1;

                var newVoiceOver = new CartoonVoiceOver
                {
                    Name         = $"Озвучка_{count}",
                    UrlParameter = "",
                    Description  = $"Описание озвучки_{count}"
                };

                ctx.VoiceOvers.Add(newVoiceOver);
                ctx.SaveChanges();

                var id = ctx.VoiceOvers.ToList().Last().CartoonVoiceOverId;

                return(ctx.VoiceOvers.Find(id));
            }
        }
示例#20
0
        private void LoadData()
        {
            Cartoon result;

            using (var ctx = new CVDbContext(SettingsHelper.AppDataPath))
            {
                result = ctx.Cartoons
                         .Include(c => c.CartoonUrls)
                         .Include(c => c.CartoonSeasons)
                         .Include(c => c.CartoonVoiceOvers)
                         .Single(c => c.CartoonId == SettingsHelper.GlobalIdList.CartoonId);
            }

            SelectedCartoon     = CloneObject <Cartoon>(result);
            SelectedCartoonUrl  = SelectedCartoon.CartoonUrls.First();
            TempCartoonSnapshot = JsonConvert.SerializeObject(SelectedCartoon);

            Seasons        = new BindableCollection <CartoonSeason>(result.CartoonSeasons);
            VoiceOvers     = new BindableCollection <CartoonVoiceOver>(result.CartoonVoiceOvers);
            SelectedSeason = Seasons.FirstOrDefault();
        }
示例#21
0
        /// <summary>
        /// Загрузка из БД списка мультсериалов
        /// </summary>
        private void LoadCartoonList()
        {
            BindableCollection <Cartoon> cartoons;

            using (var ctx = new CVDbContext(SettingsHelper.AppDataPath))
            {
                ctx.Cartoons
                .Where(c => c.CartoonWebSites
                       .Any(cws => cws.CartoonWebSiteId == SettingsHelper.GlobalIdList.WebSiteId))
                .Load();
                cartoons = new BindableCollection <Cartoon>(ctx.Cartoons.Local);
            }

            Cartoons = new BindableCollection <Cartoon>(cartoons)
            {
                new Cartoon
                {
                    Name = SettingsHelper.NewElementString
                }
            };
        }
示例#22
0
        /// <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 RemoveCartoon()
        {
            var dvm = new DialogViewModel(null, DialogType.REMOVE_OBJECT);

            WinMan.ShowDialog(dvm);

            switch (dvm.DialogResult)
            {
            case DialogResult.YES_ACTION:
                break;

            case DialogResult.NO_ACTION:
                return;

            default:
                return;
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                var cartoon = ctx.Cartoons.Find(GlobalIdList.CartoonId);

                if (cartoon != null)
                {
                    ctx.Cartoons.Remove(cartoon);
                }

                var voiceOverForRemove = ctx.VoiceOvers
                                         .Where(vo => vo.Cartoons.Count == 1)
                                         .Where(vo => vo.Cartoons
                                                .Any(c => c.CartoonId == GlobalIdList.CartoonId));
                ctx.VoiceOvers.RemoveRange(voiceOverForRemove);

                ctx.SaveChanges();
            }

            var parent = ((CartoonsEditorViewModel)Parent);

            parent.Cartoons.Remove(parent.SelectedCartoon);
        }
        /// <summary>
        /// Сохранить изменения
        /// </summary>
        public void SaveChanges()
        {
            if (CanSaveChanges is false)
            {
                return;
            }
            using (var ctx = new CVDbContext(AppDataPath))
            {
                var cartoon = ctx.Cartoons
                              .Include(c => c.CartoonUrls)
                              .Single(c => c.CartoonId == GlobalIdList.CartoonId);

                cartoon.Name        = SelectedCartoon.Name;
                cartoon.Description = SelectedCartoon.Description;
                cartoon.CartoonUrls
                .Single(cu => cu.CartoonUrlId == SelectedCartoonUrl.CartoonUrlId).Url = SelectedCartoonUrl.Url;

                ctx.Entry(cartoon).State = EntityState.Modified;


                ctx.SaveChanges();
            }

            TempCartoonSnapshot = JsonConvert.SerializeObject(SelectedCartoon);

            NotifyOfPropertyChange(() => CanSaveChanges);
            NotifyOfPropertyChange(() => HasChanges);
            var parent = (CartoonsEditorViewModel)Parent;

            if (parent == null)
            {
                return;
            }

            parent.SelectedCartoon.Name = SelectedCartoon.Name;
            parent.NotifyOfPropertyChange(() => parent.SelectedCartoon);
            parent.NotifyOfPropertyChange(() => parent.Cartoons);
        }
示例#25
0
        /// <summary>
        /// Загрузка данных выбранного эпизода для редактирования
        /// </summary>
        /// <returns></returns>
        private bool LoadSelectedEpisodeData()
        {
            using (var ctx = new CVDbContext(AppDataPath))
            {
                var episode = ctx.CartoonEpisodes
                              .Include(ce => ce.EpisodeVoiceOvers)
                              .First(ce => ce.CartoonEpisodeId == GlobalIdList.EpisodeId);

                if (episode.EpisodeVoiceOvers.Count == 0)
                {
                    WinMan.ShowDialog(new DialogViewModel(
                                          "У выбранного эпизода отсутствуют озвучки, добавьте одну или более для продолжения редактирования",
                                          DialogType.INFO));
                    return(false);
                }

                var voiceOvers = ctx.VoiceOvers
                                 .Include(vo => vo.CartoonEpisodes)
                                 .Include(vo => vo.CheckedEpisodes)
                                 .Where(vo => vo.CartoonEpisodes
                                        .Any(ce => ce.CartoonEpisodeId == GlobalIdList.EpisodeId));

                foreach (var vo in voiceOvers)
                {
                    vo.SelectedEpisodeId = episode.CartoonEpisodeId;
                }

                var options = ctx.EpisodeOptions
                              .Include(eo => eo.Jumpers)
                              .Where(eo => eo.CartoonEpisodeId == GlobalIdList.EpisodeId);

                EditableEpisode = CloneObject <CartoonEpisode>(episode);
                VoiceOvers      = new BindableCollection <CartoonVoiceOver>(voiceOvers);
                EpisodeOptions  = new BindableCollection <EpisodeOption>(options);
                return(true);
            }
        }
        /// <summary>
        /// Удалить выбранный сезон
        /// </summary>
        public void RemoveSeason()
        {
            if (CanRemoveSeason is false)
            {
                return;
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                var temp = ctx.CartoonSeasons.Find(SelectedSeason.CartoonSeasonId);
                ctx.Entry(temp).State = EntityState.Deleted;
                ctx.SaveChanges();
            }

            var tempList = ((CartoonsEditorViewModel)Parent).Seasons;

            ((CartoonsEditorViewModel)Parent)
            .Seasons.Remove(tempList.First(s => s.CartoonSeasonId == SelectedSeason.CartoonSeasonId));
            Seasons.Remove(SelectedSeason);
            NotifyOfPropertyChange(() => Seasons);
            SelectedSeason = Seasons.Count > 0
                                ? Seasons.Last()
                                : null;
        }
示例#27
0
        /// <summary>
        /// Обновить список озвучек
        /// </summary>
        public void UpdateVoiceOverList()
        {
            if (GlobalIdList.CartoonId == 0)
            {
                return;
            }

            if (IsNotEditing)
            {
                UpdateCartoonVoiceOvers();
            }


            if (GlobalIdList.EpisodeId == 0)
            {
                return;
            }

            CartoonEpisode episode;

            using (var ctx = new CVDbContext(AppDataPath))
            {
                episode = ctx.CartoonEpisodes
                          .Include(e => e.EpisodeVoiceOvers)
                          .Single(e => e.CartoonEpisodeId == GlobalIdList.EpisodeId);
            }

            foreach (var vo in episode.EpisodeVoiceOvers)
            {
                vo.SelectedEpisodeId = episode.CartoonEpisodeId;
            }

            VoiceOvers = new BindableCollection <CartoonVoiceOver>(episode.EpisodeVoiceOvers);
            NotifyOfPropertyChange(() => CanEditPreviousEpisode);
            NotifyOfPropertyChange(() => CanEditNextEpisode);
        }
示例#28
0
 public StudiesController(CVDbContext context)
 {
     _context = context;
 }
示例#29
0
 public PortfolioController(CVDbContext db)
 {
     this.db = db;
 }
示例#30
0
        /// <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();
            }
        }