Пример #1
0
        // сложить настройки из config-файла в словарь настроек приложения
        private static void putAppConfigParamsToAppProperties()
        {
            NameValueCollection cfg = ConfigurationManager.AppSettings;
            string value;

            // наименование службы MS SQL Server, как в services.msc
            setGlobalValueFromCfg("MSSQLServiceName", MSSQLService.Controller.ServiceName);
            // флаг перезапуска sql-службы, по умолчанию - false
            setGlobalValueFromCfg("MSSQLServiceRestartEnable", false);
            // уровень совместимости БД (120 - это MS SQL Server 2014)
            setGlobalValueFromCfg("MSSQLServerCompatibleLevel", 0);
            // таймаут выполнения команд в MS SQL, в СЕКУНДАХ
            setGlobalValueFromCfg("MSSQLCommandTimeout", 2);

            // уведомление Одерманов о готовом заказе
            setGlobalValueFromCfg("NoticeOrdermanFeature", false);
            setGlobalValueFromCfg <string>("NoticeOrdermanFolder", null);
            // проверка настроек ф-и уведомления
            if (AppProperties.GetBoolProperty("NoticeOrdermanFeature"))
            {
                string folder = (string)AppProperties.GetProperty("NoticeOrdermanFolder");
                if (folder == null)
                {
                    AppLib.WriteLogInfoMessage("Функция NoticeOrdermanFeature включена, но не указана папка для сохранения файлов-уведомлений NoticeOrdermanFolder");
                }
                else
                {
                    if (!folder.EndsWith(@"\"))
                    {
                        AppProperties.SetProperty("NoticeOrdermanFolder", folder + @"\");
                    }
                    if (!System.IO.Directory.Exists(folder))
                    {
                        AppLib.WriteLogInfoMessage("Функция NoticeOrdermanFeature включена, указана папка для сохранения файлов-уведомлений NoticeOrdermanFolder, но в системе эта папка не существует!");
                    }
                }
            }

            // режим сортировки заказов
            string ordersSortMode = "Desc";

            value = cfg["SortOrdersByCreateDate"];
            if ((value != null) && (value.Equals("Asc", StringComparison.OrdinalIgnoreCase)))
            {
                ordersSortMode = "Asc";
            }
            AppProperties.SetProperty("SortOrdersByCreateDate", ordersSortMode);

            // время ожидания в состоянии ГОТОВ (время, в течение которого официант должен забрать блюдо), в секундах
            setGlobalValueFromCfg("ExpectedTake", 0);

            // читать ли из БД выданные блюда
            setGlobalValueFromCfg("IsReadTakenDishes", false);
            // использовать ли двухэтапный переход в состояние ГОТОВ/ подтверждение состояния ГОТОВ (повар переводит, шеф-повар подтверждает)
            setGlobalValueFromCfg("UseReadyConfirmedState", false);
            // Время, в СЕКУНДАХ, автоматического перехода из Готово в ПодтвГотово, при включенном ПодтвГотово (UseReadyConfirmedState = true). Если отсутствует или равно 0, то автоматического перехода не будет.
            setGlobalValueFromCfg("AutoGotoReadyConfirmPeriod", 0);

            // учитывать ли отмененные блюда при подсчете одновременно готовящихся блюд для автостарта готовки
            setGlobalValueFromCfg("TakeCancelledInAutostartCooking", false);

            value = cfg["TimeOfAutoCloseYesterdayOrders"];
            TimeSpan ts = TimeSpan.Zero;

            if (value != null)
            {
                if (!TimeSpan.TryParse(value, CultureInfo.InvariantCulture, out ts))
                {
                    ts = TimeSpan.Zero;
                }
            }
            AppProperties.SetProperty("TimeOfAutoCloseYesterdayOrders", ts);

            setGlobalValueFromCfg("MidnightShiftShowYesterdayOrders", 0d);

            // неиспользуемые цеха
            value = cfg["UnusedDepartments"];
            if (!value.IsNull())  // не Null и не пусто
            {
                HashSet <int> unUsed = new HashSet <int>();
                if (value.Contains(','))
                {
                    value = value.Replace(',', ';');
                }
                int[] ids = value.Split(';').Select(s => s.Trim().ToInt()).ToArray();
                foreach (int item in ids)
                {
                    if ((item != 0) && !unUsed.Contains(item))
                    {
                        unUsed.Add(item);
                    }
                }

                if (unUsed.Count == 0)
                {
                    AppProperties.SetProperty("UnusedDepartments", null);
                }
                else
                {
                    AppProperties.SetProperty("UnusedDepartments", unUsed);
                }
            }
            else
            {
                AppProperties.SetProperty("UnusedDepartments", null);
            }

            // Максимальное количество архивных файлов журнала. По умолчанию, равно 0 (нет ограничения).
            value = cfg["MaxLogFiles"];
            AppProperties.SetProperty("MaxLogFiles", ((value == null) ? 0 : value.ToInt()));

            // отладочные сообщения
            setGlobalValueFromCfg("IsWriteTraceMessages", false);
            setGlobalValueFromCfg("TraceOrdersDetails", false);
            setGlobalValueFromCfg("IsLogClientAction", false);
            setGlobalValueFromCfg("TraceQueryToMSSQL", false);


            // ВНУТРЕННИЕ КОЛЛЕКЦИИ

            // коллекция для хранения готовящегося количества блюд по цехам (направлениям печати)
            AppProperties.SetProperty("dishesQty", new Dictionary <int, decimal>());
        }
Пример #2
0
 private void writeLogMsg(string logMsg)
 {
     AppLib.WriteLogTraceMessage("OmanNtfr|" + logMsg);
 }