/// <summary>
        ///     Добавление эпизодов
        /// </summary>
        public async Task <bool> AddSouthPark()
        {
            if (CanAddAddSouthPark is false)
            {
                return(false);
            }
            AddingFilmCancellationTokenSource = new CancellationTokenSource();
            AddingFilmToken = AddingFilmCancellationTokenSource.Token;

            try
            {
                var wvm = new WaitViewModel();
                WinMan.ShowWindow(wvm);

                ((Window)((MainViewModel)Parent).GetView()).IsEnabled = false;

                await CreateSP(wvm);

                ((Window)((MainViewModel)Parent).GetView()).IsEnabled = true;
                wvm.TryClose();
            }
            catch (Exception e)
            {
                WinMan.ShowWindow(new DialogViewModel(e.ToString(), DialogType.Error, e));
                return(false);
            }

            Films = new BindableCollection <Film>(GetDbCollection <Film>());
            return(AddingFilmToken.IsCancellationRequested is false);
        }
        /// <summary>
        /// Установить все значения по умолчанию
        /// </summary>
        public void SetDefaultValues()
        {
            if (CanSetDefaultValues is false)
            {
                NotifyOfPropertyChange(() => CanSetDefaultValues);
                return;
            }

            var dvm = new DialogViewModel("Данная операция безвозвратна. Вы действительно хотите установить настройки по умолчанию?",
                                          DialogType.Question);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.NoAction)
            {
                return;
            }

            WatchingSettings = new WatchingSettings {
                Id = WatchingSettings.Id
            };
            UpdateDbCollection(entity: WatchingSettings);
            //SaveChanges();
            LoadWS();
            NotifyButtons();

            WinMan.ShowDialog(new DialogViewModel("Данные успешно сброшены по умоланию", DialogType.Info));
        }
        /// <summary>
        /// Отмена измененных данных
        /// </summary>
        public void CancelChanges()
        {
            if (CanCancelChanges is false)
            {
                return;
            }

            var dvm = new DialogViewModel(null, DialogType.CANCEL_CHANGES);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.NO_ACTION)
            {
                return;
            }

            EditableEpisode       = JsonConvert.DeserializeObject <CartoonEpisode>(TempEpisodeSnapshot);
            SelectedEpisodeOption = JsonConvert.DeserializeObject <EpisodeOption>(TempEpisodeOptionSnapshot);
            var tempId = SelectedJumper.JumperId;

            Jumpers             = new BindableCollection <Jumper>(SelectedEpisodeOption.Jumpers);
            SelectedJumper      = Jumpers.First(j => j.JumperId == tempId);
            EditableEpisodeTime = ConvertToEpisodeTime(SelectedEpisodeOption, SelectedJumper);
            NotifyEditingProperties();
            NotifyOfPropertyChange(() => Jumpers);
            NotifyOfPropertyChange(() => SelectedJumper);
        }
        /// <summary>
        /// Изменение значения свойства с учетом отмены выбора
        /// </summary>
        /// <param name="element">Исходное значение объекта</param>
        /// <param name="value">Конечное значение объекта</param>
        private void ChangePropertyValue(ref object element, object value)
        {
            var(identifier, oldValue, hasChanges) = SetStartingValues(element, value);

            if (hasChanges is false)
            {
                return;
            }

            if (((ISettingsViewModel)ActiveItem)?.HasChanges ?? false)
            {
                var vm = new DialogViewModel(null, DialogType.SAVE_CHANGES);
                _ = WinMan.ShowDialog(vm);

                switch (vm.DialogResult)
                {
                case DialogResult.YES_ACTION:
                    ((ISettingsViewModel)ActiveItem).SaveChanges();
                    break;

                case DialogResult.NO_ACTION:
                    break;

                case DialogResult.CANCEL_ACTION:
                    Application.Current.Dispatcher.BeginInvoke(
                        new Action(() => SetOldValue(identifier, oldValue)),
                        DispatcherPriority.ContextIdle, null);
                    return;
                }
            }

            NotifyChangedProperties(identifier, value);
        }
        /// <summary>
        /// Проверить номер джампера на корректность
        /// </summary>
        /// <param name="number">Номер джампера</param>
        /// <returns></returns>
        public (bool status, string reason) CheckJumperNumber(int?number)
        {
            if (number == null)
            {
                return(false, "недопустимый номер");
            }

            if (Jumpers.Any(j => j.Number == number))
            {
                var dvm = new DialogViewModel("Номер уже существует, хотите ли вы поменять их местами?", DialogType.Question);

                WinMan.ShowDialog(dvm);

                switch (dvm.DialogResult)
                {
                case DialogResult.YesAction:
                    var jumper = Jumpers.First(j => j.Number == number);
                    jumper.Number = SelectedJumper.Number;
                    DbMethods.UpdateDbCollection(jumper);
                    return(true, "Операция успешно завершена");

                case DialogResult.NoAction:
                    return(false, "Данный номер уже существует");

                default:
                    return(false, "Операция отменена");
                }
            }

            return(number > Jumpers.Count
                                ? (false, "Все номера должны быть по порядку без пропусков")
                                : (true, "Операция успешно завершена"));
        }
        /// <summary>
        /// Кнопка Редактор озвучек
        /// </summary>
        public void EditVoiceOvers()
        {
            var wm = new WindowsManagerViewModel(new VoiceOversEditingViewModel(GlobalIdList));

            WinMan.ShowDialog(wm);

            UpdateVoiceOverList();
        }
        /// <summary>
        /// Открыть редактор озвучек
        /// </summary>
        public void EditVoiceOvers()
        {
            var wm = new WindowsManagerViewModel(new VoiceOversEditingViewModel(
                                                     websiteId: GlobalIdList.WebSiteId,
                                                     cartoonId: GlobalIdList.CartoonId));

            WinMan.ShowDialog(wm);

            UpdateVoiceOverList();
        }
        /// <summary>
        /// Сбросить последнюю дату просмотра у эпизодов
        /// </summary>
        public void ResetLastDateViewed()
        {
            if (CanResetLastDateViewed is false)
            {
                NotifyOfPropertyChange(() => CanResetLastDateViewed);
            }

            DialogViewModel dvm;
            var             filmName = SelectedGlobalResetFilm.Name;

            if (filmName == "всех")
            {
                dvm = new DialogViewModel($"Вы уверены что хотите сбросить даты последнего просмотра " +
                                          $"ВСЕХ эпизодов? Эта операция необратима.", DialogType.Question);
            }
            else
            {
                dvm = new DialogViewModel($"Вы уверены что хотите сбросить даты последнего просмотра " +
                                          $"всех эпизодов \"{filmName}\"? " +
                                          "Эта операция необратима.", DialogType.Question);
            }

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.YesAction)
            {
                var resetEpisodes = new List <Episode>();
                if (filmName == "всех")
                {
                    Films.ToList().ForEach(s => resetEpisodes.AddRange(s.Episodes));
                }
                else
                {
                    resetEpisodes.AddRange(Films.First(f => f.Name == filmName).Episodes);
                }

                if (resetEpisodes.All(re => re.LastDateViewed == AppVal.ResetTime))
                {
                    WinMan.ShowDialog(new DialogViewModel("Дата уже сброшена.", DialogType.Info));
                    return;
                }

                foreach (var ep in resetEpisodes)
                {
                    ep.LastDateViewed = AppVal.ResetTime;
                }

                UpdateDbCollection(objCollection: resetEpisodes);
                WinMan.ShowDialog(new DialogViewModel("Дата успешно сброшена.", DialogType.Info));
            }
            NotifyOfPropertyChange(() => CanResetLastDateViewed);
        }
        /// <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 SecretAction()
        {
            if (SecretVisibility == Visibility.Visible)
            {
                SecretVisibility = Visibility.Collapsed;
                return;
            }

            if (WinMan.ShowDialog(new SecretViewModel()) is true)
            {
                SecretVisibility = Visibility.Visible;
            }
        }
        public void TotalEpisodesReset()
        {
            var dvm = new DialogViewModel(
                "Внимание, данное действие сбросит дату последнего просмотра у ВСЕХ эпизодов.\nВы хотите продолжить?",
                DialogType.QUESTION);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.YES_ACTION)
            {
                //reset time
            }
        }
        /// <summary>
        /// Сохранить изменения
        /// </summary>
        public void SaveChanges()
        {
            if (CanSaveChanges is false)
            {
                NotifyOfPropertyChange(() => CanSaveChanges);
                return;
            }

            UpdateDbCollection(entity: WatchingSettings);
            LoadWS();
            NotifyButtons();

            WinMan.ShowDialog(new DialogViewModel("Изменения успешно сохранены", DialogType.Info));
        }
        public void SetDefaultValues()
        {
            var dvm = new DialogViewModel("Данная операция безвозвратна. Вы действительно хотите установить настройки по умолчанию?",
                                          DialogType.QUESTION);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.NO_ACTION)
            {
                return;
            }

            GeneralSettings = new GeneralSettingsValue();
            SaveChanges();
        }
        /// <summary>
        /// Сброс даты последнего просмотра у всех эпизодов
        /// </summary>
        public void TotalEpisodesReset()
        {
            var dvm = new DialogViewModel(
                "Внимание, данное действие сбросит дату последнего просмотра у ВСЕХ эпизодов.\nВы хотите продолжить?",
                DialogType.Question);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.YesAction)
            {
                var films = GetDbCollection <Film>();

                films.SelectMany(f => f.Episodes).ToList().ForEach(e => e.LastDateViewed = AppVal.ResetTime);

                UpdateDbCollection(films.Where(f => f.Name != "всех"));
            }
        }
        /// <summary>
        ///     Сохранить изменения
        /// </summary>
        public void SaveChanges()
        {
            if (CanSaveChanges is false)
            {
                return;
            }

            if (HasAddressChanges)
            {
                var episode = GetEpisodeFromDbById(CurrentAddressInfo.Episode.Id);
                var changeDefaultAddressInfo = Equals(episode.AddressInfo.Id, CurrentAddressInfo.Id);
                UpdateDbCollection(CurrentAddressInfo);
                AddressSnapshot = JsonConvert.SerializeObject(CurrentAddressInfo);
                if (changeDefaultAddressInfo)
                {
                    episode.AddressInfo = CurrentAddressInfo;
                    UpdateDbCollection(episode);
                }
            }

            if (HasJumperChanges)
            {
                UpdateDbCollection <Jumper>(Jumpers);
                Jumpers = new BindableCollection <Jumper>(CurrentAddressInfo.Jumpers);
                CancelSelection();
                RefreshJumpersConfig();
            }


            WinMan.ShowDialog(new DialogViewModel("Изменения успешно сохранены", DialogType.Info));
            if (IsInterfaceUnlocked is false)
            {
                IsInterfaceUnlocked = true;
            }

            NotifyChanges();
            NotifyOfPropertyChange(() => CanPlay);
            NotifyOfPropertyChange(() => CurrentEpisodeTime);
            NotifyOfPropertyChange(() => CurrentAddressInfo);
            NotifyOfPropertyChange(() => CanDecreaseVideoRate);
            NotifyOfPropertyChange(() => CanIncreaseVideoRate);
            NotifyOfPropertyChange(() => CanDefaultVideoRate);
            NotifyOfPropertyChange(() => CanAddFirstJumper);
            NotifyOfPropertyChange(() => CanAddVolumeJumper);
            NotifyOfPropertyChange(() => EEVM.CanSetDefaultAddress);
        }
        /// <summary>
        ///     Действие при старте просмотра
        /// </summary>
        public void Start()
        {
            if (CanStart is false)
            {
                return;
            }

            CreateList();
            ActivateDeactivateTray((Window)((MainViewModel)Parent).GetView());
            VideoPlayer = new VideoPlayerViewModel(this,
                                                   WatchingEpisodesCount, CheckedEpisodes)
            {
                MainView = (Window)((MainViewModel)Parent).GetView()
            };
            WinMan.ShowWindow(VideoPlayer);
            NotifyOfPropertyChange(() => EpisodesCountRemainingString);
            NotifyOfPropertyChange(() => CanStart);
        }
        /// <summary>
        ///     Установить номер джампера
        /// </summary>
        public void SetJumperNumber()
        {
            if (CanSetJumperNumber is false)
            {
                return;
            }

            var(status, reason) = CheckJumperNumber(NewJumperNumber);

            WinMan.ShowDialog(new DialogViewModel(reason, DialogType.Info));
            if (status)
            {
                SelectedJumper.Number = NewJumperNumber ?? 0;
                UpdateDbCollection(SelectedJumper);
                JumperSnapshot = JsonConvert.SerializeObject(SelectedJumper);
                Jumpers        = new BindableCollection <Jumper>(CurrentAddressInfo.Jumpers);
            }

            NotifyChanges();
        }
        /// <summary>
        ///     Установить адрес
        /// </summary>
        public async void SetAddress()
        {
            if (CanSetAddress is false)
            {
                return;
            }

            if (await CheckAddress(NewAddress))
            {
                WinMan.ShowDialog(new DialogViewModel("Адрес успешно обновлен", DialogType.Info));
                CurrentAddressInfo.Link = NewAddress;
            }
            else
            {
                WinMan.ShowDialog(new DialogViewModel("Адрес некорректный или отсутствует интернет соединение",
                                                      DialogType.Info));
            }

            NotifyChanges();
            NotifyOfPropertyChange(() => CanSetAddress);
        }
        /// <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 CancelChanges()
        {
            if (CanCancelChanges is false)
            {
                NotifyOfPropertyChange(() => CanCancelChanges);
                return;
            }

            var dvm = new DialogViewModel("Данная операция безвозвратна. Вы действительно хотите отменить изменения?",
                                          DialogType.Question);

            WinMan.ShowDialog(dvm);

            if (dvm.DialogResult == DialogResult.NoAction)
            {
                return;
            }

            WatchingSettings = TempWS;
            SaveChanges();
            LoadWS();
            NotifyButtons();
        }
Exemple #21
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 async void Start()
        {
            if (CanStart is false)
            {
                return;
            }

            var cartoonsCount = Cartoons.Count(c => c.Checked);

            if (GeneralSettings.WatchingInRow is true &&
                cartoonsCount > 1)
            {
                WinMan.ShowDialog(new DialogViewModel(
                                      "На данный момент нельзя смотреть подряд эпизоды, если выбрано более одного мультсериала."
                                      , DialogType.INFO));
                return;
            }

            ((MainViewModel)Parent).WindowState = WindowState.Minimized;

            StartBrowser();

            await Task.Run(StartWatch);
        }
        /// <summary>
        ///     Выполнить команду
        /// </summary>
        public async void StartCommand()
        {
            if (string.IsNullOrWhiteSpace(SelectedCommand))
            {
                return;
            }
            bool result;

            switch (SelectedCommand)
            {
            case "Добавить \"Южный Парк\"":
                result = await AddSouthPark();

                break;

            case "Проверить длительности эпизодов":
                result = ValidateEpisodesDuration();
                break;

            case "Проверить содержимое фильма \"Южный Парк\"":
                result = await CheckSP();

                break;

            case "Удалить все фильмы":
                result = RemoveFilms();
                break;

            default:
                WinMan.ShowDialog(new DialogViewModel("Неизвестная команда", DialogType.Info));
                return;
            }

            WinMan.ShowDialog(new DialogViewModel(result ? "Команда успешно выполнена" : "Команда не выполнена",
                                                  DialogType.Info));
        }
Exemple #24
0
        /// <summary>
        /// Проверка на наличие изменений через диалоговое окно
        /// </summary>
        /// <returns></returns>
        private bool HasChangesValidation()
        {
            if (HasChanges)
            {
                var dvm = new DialogViewModel(null, DialogType.SAVE_CHANGES);
                WinMan.ShowDialog(dvm);

                switch (dvm.DialogResult)
                {
                case DialogResult.YES_ACTION:
                    SaveChanges();
                    return(true);

                case DialogResult.NO_ACTION:
                    CancelChanges();
                    return(true);

                default:
                    return(false);
                }
            }

            return(true);
        }
Exemple #25
0
        /// <summary>
        /// Создание файла
        /// </summary>
        /// <param name="fileName">Имя файла (без расширения и указания папки)</param>
        /// <param name="canRewriteFile">Возможность перезаписать существующий файл</param>
        /// <param name="fileExtension">Расширение файла (по умолчанию .cview)</param>
        /// <param name="folderPath">Путь до файла (по умолчанию WorkingData)</param>
        public static string CreateFile(string fileName, bool canRewriteFile = false,
                                        string fileExtension = null, string folderPath = null)
        {
            if (folderPath == null)
            {
                folderPath = $"{SettingsHelper.AppDataPath}";
            }

            if (fileExtension == null)
            {
                fileExtension = SettingsHelper.DefaultFilesExtension;
            }

            var fullFilePath = $"{folderPath}\\{fileName}{fileExtension}";

            if (Directory.Exists(folderPath) is false)
            {
                Directory.CreateDirectory(folderPath);
            }

            if (File.Exists(fullFilePath) is false)
            {
                using (var fs = new FileStream(fullFilePath, FileMode.Create))
                {
                    fs.Dispose();
                }
            }
            else
            {
                if (canRewriteFile is false)
                {
                    return(fullFilePath);
                }

                var dvm = new DialogViewModel(null, DialogType.OVERWRITE_FILE);

                WinMan.ShowDialog(dvm);

                switch (dvm.DialogResult)
                {
                case DialogResult.YES_ACTION:
                    using (var fs = new FileStream(fullFilePath, FileMode.Create))
                    {
                        fs.Dispose();
                    }
                    break;

                case DialogResult.NO_ACTION:
                    var filePathLength = ($"{folderPath}\\{fileName}").Length;
                    fullFilePath = $"{fullFilePath.Substring(0, filePathLength)}_Copy{fileExtension}";

                    using (var fs = new FileStream(fullFilePath, FileMode.Create))
                    {
                        fs.Dispose();
                    }
                    break;

                case DialogResult.CANCEL_ACTION:
                    break;
                }
            }

            return(fullFilePath);
        }
        public void ResetLastDateViewed()
        {
            if (CanResetLastDateViewed is false)
            {
                return;
            }

            using (var ctx = new CVDbContext(AppDataPath))
            {
                var dvm = new DialogViewModel("Вы уверены что хотите сбросить дату последнего просмотра? Эта операция необратима.",
                                              DialogType.QUESTION);

                WinMan.ShowDialog(dvm);

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

                default:
                    return;
                }


                List <CartoonEpisode> episodes;

                if (IsSelectedAllCartoonsToReset)
                {
                    episodes = new List <CartoonEpisode>(ctx.CartoonEpisodes
                                                         .Include(ce => ce.EpisodeOptions)
                                                         .Include(ce => ce.CartoonVoiceOver));
                }
                else
                {
                    episodes = new List <CartoonEpisode>(ctx.CartoonEpisodes
                                                         .Include(ce => ce.EpisodeOptions)
                                                         .Include(ce => ce.CartoonVoiceOver)
                                                         .Where(ce => ce.CartoonId == SelectedGlobalResetCartoon.CartoonId));
                }

                var succesfull = false;

                foreach (var episode in episodes)
                {
                    var option = episode.EpisodeOptions
                                 .FirstOrDefault(eo => eo.CartoonVoiceOverId ==
                                                 episode.CartoonVoiceOver.CartoonVoiceOverId &&
                                                 eo.LastDateViewed > ResetTime);
                    if (option == null)
                    {
                        continue;
                    }

                    option.LastDateViewed = ResetTime;
                    ctx.SaveChanges();
                    succesfull = true;
                }

                WinMan.ShowDialog(new DialogViewModel(succesfull ? "Сброс успешно завершен."
                                                                      : "Дата уже сброшена.", DialogType.INFO));
            }
        }