示例#1
0
        private AckEnvelope ExtractEnv(Interchange isa, FunctionGroup gs, Transaction st)
        {
            return(new AckEnvelope()
            {
                ISA01_AuthInfoQualifier = isa.AuthorInfoQualifier,
                ISA02_AuthInfo = isa.AuthorInfo,
                ISA03_SecurityInfoQualifier = isa.SecurityInfoQualifier,
                ISA04_SecurityInfo = isa.SecurityInfo,
                ISA05_InterchangeSenderIdQualifier = isa.InterchangeSenderIdQualifier,
                ISA06_InterchangeSenderId = isa.InterchangeSenderId,
                ISA07_InterchangeReceiverIdQualifier = isa.InterchangeReceiverIdQualifier,
                ISA08_InterchangeReceiverId = isa.InterchangeReceiverId,
                ISA09_Date = isa.InterchangeDate,

                ISA10_Time = isa.GetElement(10),
                ISA11_InterchangeControlStandardsIdentifier = isa.GetElement(11),
                ISA12_InterchangeControlVersionNumber = isa.GetElement(12),
                ISA13_InterchangeControlNumber = isa.InterchangeControlNumber,
                ISA14_AcknowledgmentRequested = isa.GetElement(14),
                ISA15_UsageIndicator = isa.GetElement(15),
                ISA16_ComponentElementSeparator = isa.GetElement(16),
                IEA01_NumberOfIncludedFunctionalGroups = (isa.TrailerSegments.ToList()[0]).GetElement(1),
                IEA02_InterchangeControlNumber = (isa.TrailerSegments.ToList()[0]).GetElement(2),

                GS01_FunctionalIdentifierCode = gs.FunctionalIdentifierCode,
                GS02_ApplicationSenderCode = gs.ApplicationSendersCode,
                GS03_ApplicationReceiverCode = gs.ApplicationReceiversCode,
                GS04_Date = gs.Date,
                GS06_GroupControlNumber = gs.ControlNumber.ToString(),
                GS07_ResponsibleAgencyCode = gs.ResponsibleAgencyCode,
                GS08_Version = gs.VersionIdentifierCode,
                GS05_Time = gs.GetElement(5),
                GE01_NumberOfTransactionSetsIncluded = (gs.TrailerSegments.ToList()[0]).GetElement(1),
                GE02_GroupControlNumber = (gs.TrailerSegments.ToList()[0]).GetElement(2),

                ST01_TransactionSetIdentifierCode = st.IdentifierCode,
                ST02_TransactionSetControlNumber = st.ControlNumber,
                SE01_NumberOfIncludedSegments = (st.TrailerSegments.ToList()[0]).GetElement(1),
                SE02_TransactionSetControlNumber = (st.TrailerSegments.ToList()[0]).GetElement(2)
            });
        }
        private object SaveFunctionalGroup(FunctionGroup functionGroup, object interchangeId)
        {
            string idCode;
            var    date          = DateTime.MaxValue;
            var    controlNumber = 0;
            string version;

            if (functionGroup.FunctionalIdentifierCode.Length <= 2)
            {
                idCode = functionGroup.FunctionalIdentifierCode;
            }
            else
            {
                idCode = functionGroup.FunctionalIdentifierCode.Substring(0, 2);
                Trace.TraceWarning(
                    "FunctionalIdentifier code '{0}' will be truncated because it exceeds the max length of 2.",
                    functionGroup.FunctionalIdentifierCode);
            }
            try
            {
                date = functionGroup.Date;
            }
            catch (Exception exc)
            {
                Trace.TraceWarning(
                    "FunctionalGroup date '{0}' and time '{1}' could not be parsed. {2}",
                    functionGroup.GetElement(4),
                    functionGroup.GetElement(5),
                    exc.Message);
            }
            try
            {
                controlNumber = functionGroup.ControlNumber;
            }
            catch (Exception exc)
            {
                Trace.TraceWarning(
                    "FunctionalGroup control number '{0}' could not be parsed. {1}",
                    functionGroup.GetElement(6),
                    exc.Message);
            }
            if (functionGroup.VersionIdentifierCode.Length <= 12)
            {
                version = functionGroup.VersionIdentifierCode;
            }
            else
            {
                version = functionGroup.VersionIdentifierCode.Substring(0, 12);
                Trace.TraceWarning(
                    "FunctionalGroup version number '{0}' will be truncated because it exceeds the max length of 12.",
                    functionGroup.VersionIdentifierCode);
            }

            var functionalGroupId = _idProvider.NextId(_schema, "FunctionalGroup");
            var containerId       = _idProvider.NextId(_commonDb.Schema, "Container");

            var cmd = new SqlCommand(GetContainerIdSql("GS") + string.Format(@"
INSERT INTO [{0}].[FunctionalGroup] (Id, InterchangeId, FunctionalIdCode, Date, ControlNumber, Version)
VALUES (@id, @interchangeId, @functionalIdCode, @date, @controlNumber, @version)
", _schema, _commonDb.Schema));

            cmd.Parameters.AddWithValue("@id", functionalGroupId);
            cmd.Parameters.AddWithValue("@containerId", containerId);
            cmd.Parameters.AddWithValue("@interchangeId", interchangeId);
            cmd.Parameters.AddWithValue("@functionalIdCode", idCode);
            cmd.Parameters.AddWithValue("@date", date);
            cmd.Parameters.AddWithValue("@controlNumber", controlNumber);
            cmd.Parameters.AddWithValue("@version", version);

            ExecuteCmd(cmd);

            return(functionalGroupId);
        }
示例#3
0
        private object SaveFunctionalGroup(FunctionGroup functionGroup, object interchangeId)
        {
            string idCode;
            var    date          = DateTime.MaxValue;
            int    controlNumber = 0;
            string version;

            if (functionGroup.FunctionalIdentifierCode.Length <= 2)
            {
                idCode = functionGroup.FunctionalIdentifierCode;
            }
            else
            {
                idCode = functionGroup.FunctionalIdentifierCode.Substring(0, 2);
                Trace.TraceWarning(
                    Resources.FunctionalIdentifierTruncatedWarning,
                    functionGroup.FunctionalIdentifierCode);
            }

            try
            {
                date = functionGroup.Date;
            }
            catch (Exception exc)
            {
                Trace.TraceWarning(
                    Resources.FunctionalGroupDateTimeParsingError,
                    functionGroup.GetElement(4),
                    functionGroup.GetElement(5),
                    exc.Message);
            }

            try
            {
                controlNumber = functionGroup.ControlNumber;
            }
            catch (Exception exc)
            {
                Trace.TraceWarning(
                    Resources.FunctionalGroupControlNumberParsingError,
                    functionGroup.GetElement(6),
                    exc.Message);
            }

            if (functionGroup.VersionIdentifierCode.Length <= 12)
            {
                version = functionGroup.VersionIdentifierCode;
            }
            else
            {
                version = functionGroup.VersionIdentifierCode.Substring(0, 12);
                Trace.TraceWarning(
                    Resources.FunctionalGroupVersionNumberTruncatedWarning,
                    functionGroup.VersionIdentifierCode);
            }

            var functionalGroupId = this.idProvider.NextId(this.Schema, "FunctionalGroup");
            var containerId       = this.idProvider.NextId(this.CommonDb.Schema, "Container");

            var cmd = new SqlCommand(
                this.GetContainerIdSql("GS")
                + $"INSERT INTO [{this.Schema}].[FunctionalGroup] (Id, InterchangeId, FunctionalIdCode, Date, ControlNumber, Version)\n"
                + "VALUES (@id, @interchangeId, @functionalIdCode, @date, @controlNumber, @version)");

            cmd.Parameters.AddWithValue("@id", functionalGroupId);
            cmd.Parameters.AddWithValue("@containerId", containerId);
            cmd.Parameters.AddWithValue("@interchangeId", interchangeId);
            cmd.Parameters.AddWithValue("@functionalIdCode", idCode);
            cmd.Parameters.AddWithValue("@date", date);
            cmd.Parameters.AddWithValue("@controlNumber", controlNumber);
            cmd.Parameters.AddWithValue("@version", version);

            this.ExecuteCmd(cmd);

            return(functionalGroupId);
        }