Пример #1
0
        /// <summary>
        /// Формирование данных для передачи в WCF.
        /// </summary>
        /// <param name="item">Адрес .txt файла</param>
        /// <returns>Объект класса Cheque WCF службы.</returns>
        public testWCF.Cheque CreateOutput(string item)
        {
            var subject = File.ReadAllText(item);
            var jo      = JObject.Parse(subject);

            testWCF.Cheque result = new testWCF.Cheque();
            result.Number   = jo.SelectToken("Number").ToString();
            result.Summ     = decimal.Parse(jo.SelectToken("Summ").ToString());
            result.Discount = decimal.Parse(jo.SelectToken("Discount").ToString());
            result.Articles = this.TokenToList(jo.SelectToken("Articles")).ToArray();

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Основной метод службы.
        /// </summary>
        /// <param name="source">Source</param>
        /// <param name="e">Timer.Elapsed.</param>
        private void Seeker(object source, ElapsedEventArgs e)
        {
            //// Инициализируем логгер.
            Logger.InitLogger();
            //// Создаём объект службы WCF.
            TestWCFServiceClient client = new TestWCFServiceClient("Basic");
            //// Получаем путь к папке с файлами из конфига.
            var currentPath = ConfigurationManager.AppSettings.Get("Folder");

            //// Отбор всех .txt.
            string[] probablyCheques = Directory.GetFiles(currentPath, "*.txt");
            //// Отбор всех не .txt.
            string[] absolutelyNotCheques = Directory.GetFiles(currentPath);
            absolutelyNotCheques.Except(probablyCheques);
            //// Проверка отобранных .txt на соответствие заданной структуре json.
            string[] absolutelyCheques = this.JsonDetector(probablyCheques);

            //// Обработка корректных файлов и их перенос в соответствующую папку.
            foreach (var item in absolutelyCheques)
            {
                string name = item.Substring(item.LastIndexOf(@"\") + 1);
                Logger.Log.Info($"Файл {name} обрабатывается ");
                testWCF.Cheque output      = this.CreateOutput(item);
                string         destination = ConfigurationManager.AppSettings.Get("Completed");
                client.InsertCheques(output);
                File.Move(item, $"{destination}{name}");
                Logger.Log.Info($"Файл {name} точно является чеком");
                client.Close();
            }

            //// Обработка некорректных файлов и их перенос в соответствующую папку.
            foreach (var item in absolutelyNotCheques)
            {
                string destination = ConfigurationManager.AppSettings.Get("Garbadge");
                string name        = item.Substring(item.LastIndexOf(@"\") + 1);
                File.Move(item, $"{destination}{name}");
                Logger.Log.Info($"Файл {name} не является чеком и перемещён в папку Garbadge");
            }
        }