private static DocumentPlugValidationInfo GetDocumentPlugValidationInfo(ZipFileEntry fileEntry, IDalManager dalManager) { string specCertName = Path.ChangeExtension(fileEntry.FileName, "xlsx"); DocumentPlugValidationInfo documentPlugValidationInfo = new DocumentPlugValidationInfo() { SpecCertName = specCertName, FileContents = fileEntry.Content, FileName = fileEntry.FileName, }; TradingPartnerSpecCertMetadata tradingPartnerSpecCertMetadata = new TradingPartnerSpecCertMetadata(); List <string> errors = tradingPartnerSpecCertMetadata.Initialize(specCertName); if (errors == null || errors.Count == 0) { try { documentPlugValidationInfo.DocumentPlug = SchemaCache.GetDocumentPlug(tradingPartnerSpecCertMetadata, dalManager); } catch (Exception) { // Ignore error here as we want to add EdiValidationResult error during ValidateEdi call. } } return(documentPlugValidationInfo); }
/// <summary> Wrapper over EDIReader for GC validation feature (Based on spec cert). </summary> /// <param name="ediData">EDI text data (edi file content)</param> /// <param name="ediFileName">This is for record keeping only, not used by EDIReader</param> /// <param name="certFileFullName">Spec cert file (relative path)</param> /// <param name="dalManager">To retrieve schema</param> /// <returns></returns> public static EDIValidationResult ValidateEdi(string ediData, string ediFileName, string certFileFullName, IDalManager dalManager) { if (string.IsNullOrWhiteSpace(ediData)) { throw new ArgumentNullException("ediData", "Edi file content cannot be empty"); } if (string.IsNullOrWhiteSpace(certFileFullName)) { throw new ArgumentNullException("certFileFullName", "certFileFullName cannot be empty"); } if (dalManager == null) { throw new ArgumentNullException("dalManager", "dalManager cannot be null"); } TradingPartnerSpecCertMetadata tradingPartnerSpecCertMetadata = new TradingPartnerSpecCertMetadata(); // Purposely ignoring Initialize function return type (errors) since I don't expect errors here. // Spec cert is uploaded only after validation. tradingPartnerSpecCertMetadata.Initialize(certFileFullName, null, DateTime.MinValue); EDIValidationResult ediValidationResult = new EDIValidationResult() { FileName = ediFileName, SchemaName = tradingPartnerSpecCertMetadata.SchemaFileName, SegmentValidationResults = new List <SegmentValidationResult>(), TransactionNumbers = new List <string>(), DisplayName = tradingPartnerSpecCertMetadata.GetCertFileDisplayName(), Type = tradingPartnerSpecCertMetadata.Type, }; try { IDocumentPlug documentPlug = SchemaCache.GetDocumentPlug(tradingPartnerSpecCertMetadata, dalManager); IFatpipeDocument fatpipeDocument; ediValidationResult = ValidateEdi(ediData, ediFileName, certFileFullName, documentPlug, out fatpipeDocument); } catch (Exception ex) { ediValidationResult.SegmentValidationResults.Add( new SegmentValidationResult() { Type = ResultType.Error, SequenceNumber = -1, Name = "N/A", Description = "Internal error occurred", //ex.Message, StartIndex = -1, EndIndex = -1, } ); } return(ediValidationResult); }