예제 #1
0
        // сохранить настройку приложения из config-файла в bool-свойство приложения
        private static void saveAppSettingToPropTypeBool(string settingName)
        {
            string settingValue = AppLib.GetAppSetting(settingName);

            if (settingValue == null)
            {
                return;
            }

            // если значение истина, true или 1, то сохранить в свойствах приложения True, иначе False
            if (settingValue.ToBool() == true)
            {
                AppLib.SetAppGlobalValue(settingName, true);
            }
            else
            {
                AppLib.SetAppGlobalValue(settingName, false);
            }
        }
예제 #2
0
        private static void parseAndSetAllLangString(string resKey)
        {
            string resValue = AppLib.GetAppSetting(resKey);

            if (string.IsNullOrEmpty(resValue) == true)
            {
                return;
            }

            string[] aStr = resValue.Split('|');
            if (aStr.Length != 3)
            {
                return;
            }

            Dictionary <string, string> d = new Dictionary <string, string>();

            d.Add("ru", aStr[0]); d.Add("ua", aStr[1]); d.Add("en", aStr[2]);
            AppLib.SetAppGlobalValue(resKey, d);
        }
예제 #3
0
        // закрытие всех окон и возврат в начальный экран
        // создание нового заказа
        public static void ReStartApp(bool isResetLang, bool isCloseChildWindow, bool isCreateNewOrder)
        {
            if (isCloseChildWindow == true)
            {
                CloseChildWindows();
            }

            MainWindow mainWin = (MainWindow)Application.Current.MainWindow;

            mainWin.ClearSelectedGarnish();
            mainWin.HideDishesDescriptions();

            mainWin.lstMenuFolders.SelectedIndex = 0;
            mainWin.scrollDishes.ScrollToTop();

            // установить язык UI
            if (isResetLang == true)
            {
                string langDefault = AppLib.GetAppSetting("langDefault");
                mainWin.selectAppLang(langDefault);
            }

            // заказ
            OrderItem order;

            if (isCreateNewOrder)
            {
                order = CreateNewOrder();
            }
            else
            {
                order = AppLib.GetCurrentOrder();
                order.Clear();
            }

            mainWin.updatePrice();
        }
예제 #4
0
        public static OrderItem CreateNewOrder()
        {
            string deviceName = (string)AppLib.GetAppGlobalValue("ssdID", string.Empty);
            int    rndFrom    = int.Parse(AppLib.GetAppSetting("RandomOrderNumFrom")); // случайный номер заказа: От
            int    rndTo      = int.Parse(AppLib.GetAppSetting("RandomOrderNumTo"));   // случайный номер заказа: До

            OrderItem order = new OrderItem()
            {
                DeviceID             = deviceName,
                RangeOrderNumberFrom = rndFrom, RangeOrderNumberTo = rndTo
            };

            DateTime?dtOrder;

            // создать случайный номер заказа и получить дату заказа из БД
            order.CreateOrderNumberForPrint(out dtOrder);  //
            order.OrderDate = dtOrder;
            App.OrderNumber = order.OrderNumberForPrint.ToString();

            // сохранить ссылку на новый заказ в глоб.перем.
            AppLib.SetAppGlobalValue("currentOrder", order);
            // и в Главном окне
            MainWindow mainWin = (App.Current.MainWindow as MainWindow);

            mainWin.CurrentOrder = order;

            string logMsg = "Создан новый заказ № '" + App.OrderNumber + "'";

            if (dtOrder != null)
            {
                logMsg += " от " + ((DateTime)dtOrder).ToString("yyyy-MM-dd HH:mm:ss");
            }
            AppLib.WriteAppAction(logMsg);

            return(order);
        }
예제 #5
0
        public static void Main()
        {
            App app = new App();

            if (Microsoft.Shell.SingleInstance <App> .InitializeAsFirstInstance(Unique))
            {
                string cfgValue;
                // установить текущий каталог на папку с приложением
                string setAppDirResult = setAppDirectory();

                // splash-screen
                Splasher.Splash = new Views.SplashScreen();
                Splasher.ShowSplash();

                MessageListener.Instance.ReceiveMessage("Инициализация журнала событий...");
                cfgValue = AppLib.InitAppLoggers();
                if (cfgValue != null)
                {
                    appExit(1, "Ошибка инициализации журнала приложения: " + cfgValue);
                }

                AppLib.WriteLogInfoMessage("************  Start NoodleD_Client (WPF) *************");
                // объем доступной памяти
                MessageListener.Instance.ReceiveMessage("Check free RAM value...");
                int freeMemory = AppLib.getAvailableRAM();
                AppLib.WriteLogInfoMessage("Available RAM: " + freeMemory.ToString() + " MB");
                if (freeMemory < 300)
                {
                    AppLib.WriteLogErrorMessage("Terminate program by low memory.");
                    AppLib.WriteLogInfoMessage("************  End application  ************");
                    appExit(2, "This computer has too low available memory.\r\nYou need at least 300 MB free memory.");
                }

                if (setAppDirResult.IsNull() == false)
                {
                    AppLib.WriteLogInfoMessage(setAppDirResult);
                }

                // таймаут запуска приложения
                cfgValue = CfgFileHelper.GetAppSetting("StartTimeout");
                int startTimeout = 0;
                if (cfgValue != null)
                {
                    startTimeout = cfgValue.ToInt();
                }
                if (startTimeout != 0)
                {
                    for (int i = startTimeout; i > 0; i--)
                    {
                        MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд.");
                        System.Threading.Thread.Sleep(1000);
                    }
                }

                #region информация о сборках
                MessageListener.Instance.ReceiveMessage("Получаю информацию о сборках и настройках...");
                ITSAssemblyInfo asmInfo = new ITSAssemblyInfo(AppEnvironment.GetAppAssemblyName());
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");
                asmInfo = new ITSAssemblyInfo("IntegraLib");
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");
                asmInfo = new ITSAssemblyInfo("IntegraWPFLib");
                AppLib.WriteLogInfoMessage($" - файл: {asmInfo.FullFileName}, version {asmInfo.Version}, last write date '{asmInfo.DateLastOpened.ToString()}'");

                AppLib.WriteLogInfoMessage("Системное окружение: " + AppEnvironment.GetEnvironmentString());

                // номер устройства - не число!
                if (AppLib.GetAppSetting("ssdID").IsNumber() == false)
                {
                    AppLib.WriteLogErrorMessage("** Номер устройства - НЕ ЧИСЛО !! **");
                    AppLib.WriteLogInfoMessage("************  End application  ************");
                    appExit(4, "Номер устройства - НЕ ЧИСЛО!!");
                }

                // основная информация о софт-окружении
                AppLib.WriteLogTraceMessage(string.Format("Настройки: Id устройства-{0}, папка изображений-{1}, таймер бездействия-{2} sec, диапазон номеров чеков от {3} до {4}, принтер пречека-{5}",
                                                          AppLib.GetAppSetting("ssdID"), AppLib.GetAppSetting("ImagesPath"), AppLib.GetAppSetting("UserIdleTime"),
                                                          AppLib.GetAppSetting("RandomOrderNumFrom"), AppLib.GetAppSetting("RandomOrderNumTo"),
                                                          AppLib.GetAppSetting("PrinterName")));

                //******  НАСТРОЙКИ  ******
                // определенные в app.xaml
                app.InitializeComponent();
                // определенные в config-файле
                getSettingsFromConfigFile();
                // вычислить размеры, хранимые в свойствах приложения
                calculateAppSizes();
                // прочие глобальные настройки
                AppLib.SetAppGlobalValue("promoCode", null);
                //TestData.mainProc();
                #endregion

                // проверка соединения с бд
                MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных...");
                AppLib.WriteLogTraceMessage("Проверка доступа к базе данных...");
                AppLib.WriteLogTraceMessage(" - строка подключения: " + getDbConnectionString());
                string errorMessage;
                while (AppLib.CheckDBConnection(typeof(NoodleDContext), out errorMessage) == false)
                {
                    AppLib.WriteLogTraceMessage(" - result: " + errorMessage);
                    // задержка на 10 сек
                    for (int i = 10; i > 0; i--)
                    {
                        MessageListener.Instance.ReceiveMessage($"Проверка доступа к БД завершилась ошибкой!! (след.проверка через {i} сек)");
                        Thread.Sleep(1000);
                    }
                    MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных...");
                    Thread.Sleep(500);
                }
                AppLib.WriteLogTraceMessage(" - result: Ok");

                // настройки, определенные в ms sql
                readSettingFromDB();

                // данные, хранящиеся в БД
                readAppDataFromDB();

                // ожидашка
                int idleSec = (int)AppLib.GetAppGlobalValue("UserIdleTime", 0);
                if (idleSec > 0)
                {
                    IdleHandler                  = new UserActionIdle();
                    IdleHandler.IdleSeconds      = idleSec;
                    IdleHandler.IdleElapseEvent += IdleHandler_IdleElapseEvent;
                    IdleHandler.SetPause();
                }

                // главное окно приложения
                MessageListener.Instance.ReceiveMessage("Запуск основного окна...");
                Thread.Sleep(500);

                MainWindow mainWindow = new MainWindow();
                try
                {
                    app.Run(mainWindow);
                }
                catch (Exception ex)
                {
                    AppLib.WriteLogErrorMessage(ex.ToString());
                    MessageBox.Show(ex.Message, "Error Application", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
                }

                AppLib.WriteLogInfoMessage("************  End application  ************");

                // подчистить память
                if (IdleHandler != null)
                {
                    IdleHandler.Dispose();
                }

                // Allow single instance code to perform cleanup operations
                Microsoft.Shell.SingleInstance <App> .Cleanup();
            }
        }