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);
        }
Example #2
0
        /// <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);
        }