/// <summary>
 /// Инициализирует данные.
 /// </summary>
 /// <param name="userDataDTO"></param>
 public static void Init(OspDataDTO userDataDTO)
 {
     data = new AppData(userDataDTO);
     // Подписка на событие изменения свойств текущего пользователя.
     data.UserData.CurrentUser.PropChanged += CurrentUser_PropChanged;
 }
Beispiel #2
0
        /// <summary>
        /// Инициирует объект подключения.
        /// </summary>
        /// <param name="connectionString"></param>
        private void InitConnect(string connectionString)
        {
            Connection = new HubConnectionBuilder()
                         .WithAutomaticReconnect()
                         .WithUrl(connectionString, option =>
            {
                option.UseDefaultCredentials = true;
            })
                         .AddNewtonsoftJsonProtocol()
                         .Build();
            Status                   = true;
            Log                      = new ObservableCollection <LogMessage>();
            Connection.Closed       += Connection_Closed;
            Connection.Reconnected  += Connection_Reconnected;
            Connection.Reconnecting += Connection_Reconnecting;

            // Обработчик вызова закрытия программы.
            Connection.On("CloseApp", () => Application.Current.Shutdown());
            // Обработчик вызова сообщения от сервера.
            Connection.On <string>("Alert", (message) => Alert.Show(message, "Сообщение от администратора.", MessageBoxButton.OK));
            // Обработчик вызова запрет редактирования документа списания.
            Connection.On <string>("DeniedEdit", (username) => Alert.Show($"Документ заблокирован пользователем:\n{username}"));
            // Обработчик вызова открытия доступа.
            Connection.On <OspDataDTO>("AccessAllowed", async(userData) =>
            {
                // Выполнить запрос обновления клиента на сервер.
                await Connection.InvokeAsync("CheckUpdate", JsonFileAppConfig.GetAppBuild());
                // Инициализировать данные по ОСП.
                AppData.Init(userData);
                // Открыть главное окно программы.
                var window = new WorkspaceForm();
                window.Show();
                // Закрыть окно запуска.
                Application.Current.Windows[0].Close();
            });
            // Обработчик вызова проверки обновления.
            Connection.On("CheckUpdate", async() =>
            {
                // Выполнить запрос обновления клиента на сервер.
                await Connection.InvokeAsync("CheckUpdate", JsonFileAppConfig.GetAppBuild());
            });
            // Обработчик вызова получения обновления.
            Connection.On <ClientUpdateDTO>("NewUpdate", update =>
            {
                var window = new UpdateAppForm()
                {
                    DataContext = new UpdateAppVm(update)
                };
                window.ShowDialog();
            });
            // Обработчик вызова добавления лога.
            Connection.On <LogMessage>("AddLog", (message) =>
            {
                Application.Current.Dispatcher.Invoke(() => Log.Add(message));
                SelectedLog = message;
            });

            // Обработчик вызова получения данных ОСП.
            Connection.On <OspDataDTO>("UpdateOspData", (newOspData) =>
            {
                AppData.Data.UserData.UpdateAll(newOspData);
                AppData.Data.UserData.CurrentUser.PropChanged += AppData.CurrentUser_PropChanged;
            });
            // Обработчик вызова обновления баланса.
            Connection.On <IEnumerable <BalanceDTO> >("UpdateBalances", (newBalance) => AppData.Data.UserData.UpdateBalances(newBalance));
            // Обработчик вызова обновления списаний пользователя.
            Connection.On <IEnumerable <ExpenseDTO> >("UpdateUserExpenses", (newUserExpenses) => AppData.Data.UserData.UpdateUserExpenses(newUserExpenses));
            // Обработчик вызова обновления списаний в ОСП.
            Connection.On <IEnumerable <ExpenseDTO> >("UpdateOspExpenses", (newOspExpenses) => AppData.Data.UserData.UpdateExpenses(newOspExpenses));
            // Обработчик вызова обновления поступлений в ОСП.
            Connection.On <IEnumerable <ReceiptDTO> >("UpdateOspReceipts", (newReceipts) => AppData.Data.UserData.UpdateReceipts(newReceipts));
            // Обработчик вызова обновления принтеров в словаре.
            Connection.On <IEnumerable <PrinterDTO> >("UpdatePrinters", (newAllPrinters) => AppData.Data.UserData.UpdatePrinters(newAllPrinters));
            // Обработчик вызова обновления картриджей в словаре.
            Connection.On <IEnumerable <CartridgeDTO> >("UpdateCartridges", (newAllCartridges) => AppData.Data.UserData.UpdateCartridges(newAllCartridges));

            // Обработчик вызова обновления одного баланса.
            Connection.On <BalanceDTO>("UpdateBalance", (editedOneBalance) => AppData.Data.UserData.UpdateBalance(editedOneBalance));
            // Обработчик вызова обновления данных поступления.
            Connection.On <ReceiptDTO>("UpdateReceipt", (editedReceipt) => AppData.Data.UserData.UpdateReceipt(editedReceipt));
            // Обработчик вызова обновления данных списания.
            Connection.On <ExpenseDTO>("UpdateExpense", (editedExpense) => AppData.Data.UserData.UpdateExpense(editedExpense));
            // Обработчик вызова обновления данных поставщика.
            Connection.On <ProviderDTO>("UpdateProvider", (editedProvider) => AppData.Data.UserData.UpdateProvider(editedProvider));
            // Обработчик вызова обновления данных почты.
            Connection.On <EmailDTO>("UpdateEmail", (editedEmail) => AppData.Data.UserData.UpdateEmail(editedEmail));
            // Обработчик вызова обновления данных картриджа.
            Connection.On <CartridgeDTO>("UpdateCartridge", (editedCartridge) => AppData.Data.UserData.UpdateCartridge(editedCartridge));
            // Обработчик вызова обновления данных принтера.
            Connection.On <PrinterDTO>("UpdatePrinter", (editedPrinter) => AppData.Data.UserData.UpdatePrinter(editedPrinter));
            // Обработчик вызова обновления данных ОСП.
            Connection.On <OspDTO>("UpdateOsp", (editedOsp) => AppData.Data.UserData.UpdateOsp(editedOsp));
            // Обработчик вызова обновления данных пользователя.
            Connection.On <UserDTO>("UpdateUser", (editedUser) => AppData.Data.UserData.UpdateUser(editedUser));
        }