/// <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); }
/// <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"); } }