using Eaf.Core.Smtp; using Adaptation.Shared.Metrology; using Eaf.Core; using Ifx.Eaf.EquipmentConnector.File.Component.Reader; using log4net; using Shared; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Text; using System.Text.Json; using System.Linq; namespace MET08DDUPSFS6420.FileHandlers { public partial class FileRead : FileReaderHandler { private Adaptation.FileHandlers.FileRead _FileRead; public FileRead() { _Log = LogManager.GetLogger(typeof(FileRead)); _FileRead = new Adaptation.FileHandlers.FileRead(); } public override bool Extract(string reportFullPath, string eventName) { MethodBase methodBase = new StackFrame().GetMethod(); _Log.Debug(string.Concat(methodBase.Name, " - Entry - {", reportFullPath, "}")); Tuple> extractResults = null; try { extractResults = _FileRead.GetExtractResult(reportFullPath, eventName); TriggerEvents(reportFullPath, extractResults); _FileRead.Move(reportFullPath, extractResults); FilePathGeneratorInfoMove(reportFullPath, extractResults); _FileRead.WaitForThread(); _Log.Debug(string.Concat(methodBase.Name, " - Try - Exit")); return true; } catch (Exception ex) { _Log.Error(string.Concat(methodBase.Name, " - Catch - Entry {", ex.Message, "}", Environment.NewLine, Environment.NewLine, ex.StackTrace)); _FileRead.Move(reportFullPath, extractResults, exception: ex); FilePathGeneratorInfoMove(reportFullPath, extractResults, exception: ex); return false; } } public Tuple> ReExtract(string searchDirectory, string sourceFileFilter) { Tuple> results = _FileRead.ReExtract(searchDirectory, sourceFileFilter); if (!(results?.Item2 is null)) { TriggerEvents(_FileRead.Logistics.ReportFullPath, results); _FileRead.Move(_FileRead.Logistics.ReportFullPath, results); FilePathGeneratorInfoMove(_FileRead.Logistics.ReportFullPath, results); } return results; } private void FilePathGeneratorInfoMove(string reportFullPath, Tuple> extractResults, Exception exception = null) { bool isErrorFile = !(exception is null); object filePathGeneratorInfo = GetFilePathGeneratorInfo(reportFullPath, isErrorFile); Tuple tuple = _FileRead.GetOpenInsightTuple(); if (filePathGeneratorInfo is null || !(filePathGeneratorInfo is FilePathGeneratorInfo filePathGenerator)) OISiViewer.WebClientDownloadString(tuple.Item1, tuple.Item2, reportFullPath, isErrorFile, string.Empty); else { OISiViewer.WebClientDownloadString(tuple.Item1, tuple.Item2, reportFullPath, isErrorFile, filePathGenerator.To); string[] exceptionLines = _FileRead.Shared1124(reportFullPath, extractResults, filePathGenerator.To, filePathGenerator.From, filePathGenerator.ResolvedFileLocation, exception); if (isErrorFile) { try { StringBuilder stringBuilder = new StringBuilder(); foreach (string item in exceptionLines) stringBuilder.Append("<").Append(item).AppendLine(">"); ISmtp smtp = Backbone.Instance.GetBackboneComponentsOfType().SingleOrDefault(); EmailMessage emailMessage = new EmailMessage(string.Concat("Exception:", _ConfigDataBase.EquipmentElementName, _ConfigDataBase.FileConnectorConfiguration?.SourceDirectoryCloaking), stringBuilder.ToString(), MailPriority.High); smtp.Send(emailMessage); } catch (Exception) { } } } } } }