예제 #1
0
        private void GetEmcosArchivesForSubstations()
        {
            EmcosSiteWrapperApp.LogInfo("Получение архивных данных");
            Status        = State.Busy;
            DialogMessage = "Получение архивных данных ...";

            EmcosSiteWrapperApp.LogInfo("Сохранение текущей сессии");
            Repository.SaveBackup();

            _cts          = new System.Threading.CancellationTokenSource();
            IsCancel      = false;
            IsGettingData = true;

            try
            {
                var task = EmcosSiteWrapper.Instance.ExecuteAction(_cts, GetSubstationsDaysArchives);

                task.ContinueWith((s) =>
                {
                    EmcosSiteWrapperApp.LogInfo("Выполнено получение архивных данных");
                    try
                    {
                        DispatcherExtensions.InUi(() => ShowDialogInfo("Выполнено. "));
                        IsGettingData = false;
                        Status        = State.Ready;

                        /*RaisePropertyChanged("HasData");
                         * RaisePropertyChanged("SubstationsTree");
                         * RaisePropertyChanged("WindowTitle");*/
                    }
                    catch (Exception ex)
                    {
                        EmcosSiteWrapperApp.LogError("Получение данных. Ошибка - " + ex.Message);
                    }
                }, System.Threading.Tasks.TaskContinuationOptions.OnlyOnRanToCompletion);
                task.ContinueWith((s) =>
                {
                    EmcosSiteWrapperApp.LogInfo("Прервано получение архивных данных");
                    ShowDialogWarning("Прервано. ");
                    IsGettingData = false;
                    Status        = State.Ready;

                    /*RaisePropertyChanged("HasData");
                     * RaisePropertyChanged("SubstationsTree");
                     * RaisePropertyChanged("WindowTitle");*/
                }, System.Threading.Tasks.TaskContinuationOptions.OnlyOnFaulted);
            }
            catch (Exception ex)
            {
                EmcosSiteWrapperApp.LogError("Получение архивных данных. Ошибка - " + ex.Message);
                ShowDialogError("Произошла ошибка.\n" + ex.Message, Title);
                IsGettingData = false;
            }
        }
예제 #2
0
        public BalanceViewModel(System.Windows.Window window) : base(window as IWindowWithDialogs)
        {
            if (window == null)
            {
                return;
            }

            try
            {
                if (System.IO.Directory.Exists(REPORTS_FOLDER) == false)
                {
                    Directory.CreateDirectory(REPORTS_FOLDER);
                }
            }
            catch (System.IO.IOException ex)
            {
                _callBackAction(ex);
            }
            #region Добавление обработчиков окна
            if (window != null)
            {
                window.Closed += (s, e) =>
                {
                    if (Session == null)
                    {
                        return;
                    }
                    // сохранение сессии
                    if (Repository.Save())
                    {
                        EmcosSiteWrapperApp.LogInfo("Сессия сохранена");
                    }
                    else
                    {
                        EmcosSiteWrapperApp.LogInfo("Сессия не сохранена");
                    }
                }
            }
            ;
            if (window != null)
            {
                window.Loaded += (s, e) =>
                {
                    if (Status == State.Busy)
                    {
                        ShowDialogWaitingScreen("Подготовка данных ....");
                    }

                    if (Session == null && Repository.SessionsInfoList.Count == 0)
                    {
                        ShowDialogInfo(string.Format("В папке '{0}' не обнаружены сессии (файлы с расширением '{1}').\nБудет создана новая сессия.",
                                                     Repository.SESSIONS_FOLDER, Repository.SESSION_FILE_EXTENSION),
                                       Title,
                                       () => Repository.CreateEmptySession());
                    }
                    else
                    {
                        if (Session == null)
                        {
                            SelectSessionCommand.Execute(s);
                        }
                        else
                        {
                            Status = State.Ready;
                        }
                    }
                }
            }
            ;
            #endregion

            // инициализация репозитория
            _repository.Loaded          += Repository_LoadedOrSaved;
            _repository.Saved           += Repository_LoadedOrSaved;
            _repository.PropertyChanged += Repository_PropertyChanged;
            _repository.Init();

            // Инициализация команд
            InitCommands(window);

            _timer.Elapsed += Timer_Elapsed;
        }

        ~BalanceViewModel()
        {
            if (_repository != null)
            {
                _repository.Loaded          -= Repository_LoadedOrSaved;
                _repository.Saved           -= Repository_LoadedOrSaved;
                _repository.PropertyChanged -= Repository_PropertyChanged;
            }
            if (_session != null)
            {
                _session.PropertyChanged -= Session_PropertyChanged;
            }
        }
예제 #3
0
 public BalanceView()
 {
     EmcosSiteWrapperApp.LogInfo("Инициализация BalanceView");
     InitializeComponent();
 }