Beispiel #1
0
        /// <summary>
        /// Parses a redemption detail record.
        /// </summary>
        /// <remarks>
        /// A null item may be added.
        /// </remarks>
        private void ParseRedemptionDetailRecord()
        {
            RedemptionDetail redemptionDetail = RedemptionDetailParser.Parse(Line, NumberOfRedemptionDetailRecords++);

            if (redemptionDetail == null)
            {
                Log.Error("Record in line #{0} from file \"{1}\" could not be parsed.", null,
                          (int)ResultCode.CorruptSettlementRecord, LineNumber, FileName);
            }

            Extract.RedemptionDetailRecords.Add(redemptionDetail);
        }
        /// <summary>
        /// Parses the specified record text into a redemption detail object if possible.
        /// </summary>
        /// <param name="record">
        /// The record text to parse into a redemption detail object.
        /// </param>
        /// <param name="recordNumber">
        /// The number of the record of this type from the extract file being parsed.
        /// </param>
        /// <returns>
        /// * The RedemptionDetail object if successful.
        /// * Else returns null.
        /// </returns>
        internal RedemptionDetail Parse(string record,
                                        int recordNumber)
        {
            RedemptionDetail result = new RedemptionDetail();

            RecordNumber = recordNumber;

            int      recordPos    = 0;
            bool     recordValid  = true;
            string   stringField  = null;
            DateTime dateField    = DateTime.MinValue;
            decimal  decimalField = Decimal.MinValue;

            ParsingUtilities parsingUtilities = new ParsingUtilities(RecordTypeDescriptor, RecordNumber, FileName, ExtractConstants.TimeFieldLength, Log);

            // RecordType
            recordValid = parsingUtilities.VerifyString(record, ref recordPos, "Record Type", RecordType,
                                                        ExtractConstants.RecordTypeLength, recordValid);

            // ProviderId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.ProviderIdLength, recordValid);
            result.ProviderId = stringField;

            // ProviderLevelNumber
            recordValid = parsingUtilities.VerifyString(record, ref recordPos, "Hierarchy Level No.",
                                                        ExtractConstants.ProviderLevelNumber,
                                                        ExtractConstants.ProviderLevelNumberLength, recordValid);

            // TransactionId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.TransactionIdLength, recordValid);
            result.TransactionId = stringField;

            // TransactionType
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.TransactionTypeLength, recordValid);
            TransactionType transactionType;

            recordValid            = DetermineTransactionType(stringField, "Transaction Type", out transactionType, recordValid);
            result.TransactionType = transactionType;

            // TransactionDateTime
            recordValid = parsingUtilities.PopulateDateTime(record, ref recordPos, "Transaction Date\" and \"Transaction Time",
                                                            out dateField, true, true, recordValid);
            result.TransactionDateTime = dateField;

            // LocalDateTime
            recordValid = parsingUtilities.PopulateDateTime(record, ref recordPos, "Local Date\" and \"Local Time",
                                                            out dateField, true, true, recordValid);
            result.LocalDateTime = dateField;

            // PublisherName
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.PublisherNameLength, recordValid);
            result.PublisherName = stringField;

            // PublisherId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.PublisherIdLength, recordValid);
            result.PublisherId = stringField;

            // ConsumerId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.ConsumerIdLength, recordValid);
            result.ConsumerId = stringField;

            // CardSuffix
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.CardSuffixLength, recordValid);
            result.CardSuffix = stringField;

            // OfferId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField, ExtractConstants.OfferIdLength,
                                                          recordValid);
            result.OfferId = stringField;

            // OfferType
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.OfferTypeLength, recordValid);
            OfferType offerType;

            recordValid      = DetermineOfferType(stringField, "Offer Type", out offerType, recordValid);
            result.OfferType = offerType;

            // OfferAcceptanceId
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.OfferAcceptanceIdLength, recordValid);
            result.OfferAcceptanceId = stringField;

            // OfferAcceptanceDateTime
            recordValid = parsingUtilities.PopulateDateTime(record, ref recordPos,
                                                            "Offer Acceptance Date\" and \"Offer Acceptance Time", out dateField, true,
                                                            true, recordValid);
            result.OfferAcceptanceDateTime = dateField;

            // RegistrationMid
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.RegistrationMidLength, recordValid);
            result.RegistrationMid = stringField;

            // RedemptionMid
            recordValid = parsingUtilities.PopulateString(record, ref recordPos, out stringField,
                                                          ExtractConstants.RedemptionMidLength, recordValid);
            result.RedemptionMid = stringField;

            // OfferStartDate
            recordValid = parsingUtilities.PopulateDateTime(record, ref recordPos,
                                                            "Offer Start Date\" and \"Offer Start Time", out dateField, true,
                                                            true, recordValid);
            result.OfferStartDate = dateField;

            // OfferEndDate
            recordValid = parsingUtilities.PopulateDateTime(record, ref recordPos,
                                                            "Offer End Date\" and \"Offer End Time", out dateField, true,
                                                            true, recordValid);
            result.OfferEndDate = dateField;

            // PurchasePrice
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Purchase Price", out decimalField,
                                                           ExtractConstants.PurchasePriceLength, recordValid);
            result.PurchasePrice = decimalField;

            // MinimumTransactionAmount
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Minimum Transaction Amount", out decimalField,
                                                           ExtractConstants.MinimumTransactionAmountLength, recordValid);
            result.MinimumTransactionAmount = decimalField;

            // DiscountPercentage
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Discount Percentage", out decimalField,
                                                           ExtractConstants.DiscountPercentageLength, recordValid);
            result.DiscountPercentage = decimalField;

            // DiscountAmount
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Discount Amount", out decimalField,
                                                           ExtractConstants.DiscountAmountLength, recordValid);
            result.DiscountAmount = decimalField;

            // TotalTransactionAmount
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Total Transaction Amount", out decimalField,
                                                           ExtractConstants.TotalTransactionAmountLength, recordValid);
            result.TotalTransactionAmount = decimalField;

            // RedemptionDiscountAmount
            recordValid = parsingUtilities.PopulateDecimal(record, ref recordPos, "Redemption Discount Amount", out decimalField,
                                                           ExtractConstants.RedemptionDiscountAmountLength, recordValid);
            result.RedemptionDiscountAmount = decimalField;

            // Record end
            parsingUtilities.VerifyRecordEnd(record, ref recordPos, FillerLength, true, recordValid);

            // If the record is not valid, return a null value.
            if (recordValid == false)
            {
                result = null;
            }

            return(result);
        }