// сложить настройки из 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>()); }
private void writeLogMsg(string logMsg) { AppLib.WriteLogTraceMessage("OmanNtfr|" + logMsg); }