private static void ValidateAndUploadSpecCert(MapDetail mapDetail, SpecCertGenerationResult result, StreamWriter logFile, bool uploadSpecCert, string specCertType) { LogInformation(logFile, string.Format("Generating document plug from spec cert {0}", Path.GetFileName(result.SpecCertPath))); using (StreamReader stream = new StreamReader(result.SpecCertPath)) { try { GCExcelToDocumentPlug excelToDocumentPlug; switch (specCertType) { case "edi": excelToDocumentPlug = new X12GCExcelToDocumentPlug(); break; case "xml": excelToDocumentPlug = new XmlGCExcelToDocumentPlug(); break; case "flatfile": excelToDocumentPlug = new FlatFileGCExcelToDocumentPlug(); break; default: throw new NotSupportedException(string.Format("Spec cert type {0} is not supported", specCertType)); break; } IDocumentPlug plug = excelToDocumentPlug.GenerateDocumentPlug(stream.BaseStream, mapDetail.OrgName, mapDetail.DocumentType, mapDetail.Direction, Maarg.Contracts.GCValidate.SpecCertFileType.X12); // Serialize document plug for investigation plug.SerializeToXml().Save(Path.ChangeExtension(result.SpecCertPath, "xml")); if (uploadSpecCert) { // TODO: Add logic to upload to Azure blob LogWarning(logFile, "Upload functionality will be added soon."); } LogInformation(logFile, string.Format("Document plug generated successfully")); } catch (Exception ex) { result.Errors.Add(string.Format("Spec cert validation failed. Error: {0}", ex.ToString())); LogError(logFile, string.Format("Spec cert validation failed. Error: {0}", ex.ToString())); } } }
private static int ValidateInstanceFile(Parameters parameters) { string specCertFullPath = parameters.SpecCertName; string specCertFileName = Path.GetFileName(specCertFullPath); string instanceFilePath = parameters.InstanceFileName; string instanceFileName = Path.GetFileName(instanceFilePath); if (File.Exists(specCertFullPath) == false) { ConsoleExtensions.WriteError("{0} does not exist.", specCertFullPath); return(1); } if (Path.GetExtension(specCertFullPath) != ".xlsx") { ConsoleExtensions.WriteError("{0} is not a zip file.", specCertFullPath); return(1); } if (File.Exists(instanceFilePath) == false) { ConsoleExtensions.WriteError("{0} does not exist.", instanceFilePath); return(1); } string logFileName = Path.ChangeExtension(instanceFileName, "log"); ConsoleExtensions.WriteInfo("Log file for this processing: {0}", logFileName); string instanceFileData = File.ReadAllText(instanceFilePath); using (StreamWriter logFile = new StreamWriter(logFileName)) { try { TradingPartnerSpecCertMetadata metadata = new TradingPartnerSpecCertMetadata(); metadata.Initialize(specCertFileName); GCExcelToDocumentPlug excelToDocumentPlug; switch ((SpecCertFileType)metadata.FileType) { case SpecCertFileType.X12: excelToDocumentPlug = new X12GCExcelToDocumentPlug(); break; case SpecCertFileType.Xml: excelToDocumentPlug = new XmlGCExcelToDocumentPlug(); break; case SpecCertFileType.FlatFile: excelToDocumentPlug = new FlatFileGCExcelToDocumentPlug(); break; default: throw new NotSupportedException(string.Format("Spec cert type {0} is not supported", (SpecCertFileType)metadata.FileType)); break; } LogInformation(logFile, string.Format("Generating document plug from spec cert {0}", specCertFileName)); TradingPartnerSpecCertMetadata specCertMetadata = new TradingPartnerSpecCertMetadata(); specCertMetadata.Initialize(specCertFileName); IDocumentPlug documentPlug = null; using (StreamReader stream = new StreamReader(specCertFullPath)) documentPlug = excelToDocumentPlug.GenerateDocumentPlug( stream.BaseStream, specCertMetadata.TradingPartnerName, specCertMetadata.DocumentType, specCertMetadata.Direction, Maarg.Contracts.GCValidate.SpecCertFileType.X12); if (documentPlug == null) { LogError(logFile, "Document plug generation failed"); return(-1); } else { LogInformation(logFile, "Document plug generated successfully"); } LogInformation(logFile, "Validating instance file"); IFatpipeDocument fatpipeDocument; EDIValidationResult result = EdiValidator.ValidateEdi(instanceFileData, instanceFileName, specCertFileName, documentPlug, out fatpipeDocument); LogValidationResult(result, logFile); } catch (Exception ex) { LogError(logFile, string.Format("Error encountered during validating {0} file. Error: {1}", instanceFileName, ex.ToString())); } } return(0); }
public static SpecCertValidationResult ValidateSpecCert(string certFileName, Stream certFileStream, IDalManager dalManager, out SpecCertFileType certFileType) { // For error reporting lets create X12 instance of GCExcelToDocumentPlug // Once TradingPartnerSpecCertMetadata is created we will change it to appropriate instance GCExcelToDocumentPlug gcExcelToDocumentPlug = new X12GCExcelToDocumentPlug(); certFileType = SpecCertFileType.X12; try { TradingPartnerSpecCertMetadata tradingPartnerSpecCertMetadata = new TradingPartnerSpecCertMetadata(); List <string> errors = tradingPartnerSpecCertMetadata.Initialize(certFileName); certFileType = (SpecCertFileType)tradingPartnerSpecCertMetadata.FileType; gcExcelToDocumentPlug = GCExcelToDocumentPlug.CreateInstance(certFileType); if (errors.Count == 0) { // Check if this cert file already exist List <TradingPartnerSpecCertMetadata> tradingPartnerSpecCertMetadataList = dalManager.GetTradingPartnerList(tradingPartnerSpecCertMetadata.DocumentType, string.Empty); if (tradingPartnerSpecCertMetadataList.Any(t => t.TradingPartnerName == tradingPartnerSpecCertMetadata.TradingPartnerName && t.DocumentType == tradingPartnerSpecCertMetadata.DocumentType && t.Direction == tradingPartnerSpecCertMetadata.Direction)) { gcExcelToDocumentPlug.SpecCertValidationResult.SegmentDefinitionValidationResults.Add(new SegmentDefinitionValidationResult() { ColumnIndex = "N/A", RowIndex = -1, Type = ResultType.Warning, Description = "Cert file already exist." }); } gcExcelToDocumentPlug.GenerateDocumentPlug(certFileStream, tradingPartnerSpecCertMetadata.TradingPartnerName, tradingPartnerSpecCertMetadata.DocumentType, tradingPartnerSpecCertMetadata.Direction, (SpecCertFileType)tradingPartnerSpecCertMetadata.FileType); } else { foreach (string error in errors) { gcExcelToDocumentPlug.SpecCertValidationResult.SegmentDefinitionValidationResults.Add(new SegmentDefinitionValidationResult() { ColumnIndex = "N/A", RowIndex = -1, Type = ResultType.Error, Description = string.Format("Cert file name error: {0}", error) }); } } } catch (Exception ex) { gcExcelToDocumentPlug.SpecCertValidationResult.SegmentDefinitionValidationResults.Add(new SegmentDefinitionValidationResult() { ColumnIndex = "N/A", RowIndex = -1, Type = ResultType.Error, Description = string.Format("Unknown error occured ({0}), please contact Maarg", ex.Message) }); } return(gcExcelToDocumentPlug.SpecCertValidationResult); }