Exemplo n.º 1
0
            /// <summary>
            /// Calculate specific reason codes on an affiliation line and add them to the incoming collection.
            /// </summary>
            /// <param name="request">The request object.</param>
            /// <param name="requiredReasonCodes">The collection to which required reason codes are added.</param>
            /// <param name="reasonCodeRequirements">The required specific reason codes map.</param>
            /// <param name="salesAffiliationLoyaltyTier">The sales affiliation loyalty tier on which to calculate required reason codes.</param>
            private static void CalculateRequiredSpecificReasonCodesOnAffiliationLine(
                CalculateRequiredReasonCodesServiceRequest request,
                IDictionary <string, ReasonCode> requiredReasonCodes,
                HashSet <ReasonCodeRequirement> reasonCodeRequirements,
                SalesAffiliationLoyaltyTier salesAffiliationLoyaltyTier)
            {
                // Gets the affiliation according to the foreign key AffiliationId of the salesAffiliationLoyaltyTier.
                GetAffiliationByAffiliationIdDataRequest dataRequest = new GetAffiliationByAffiliationIdDataRequest(salesAffiliationLoyaltyTier.AffiliationId);
                Affiliation affiliation = request.RequestContext.Execute <SingleEntityDataServiceResponse <Affiliation> >(dataRequest).Entity;

                if (affiliation != null)
                {
                    CalculateReasonCodesSpecificToEntity(
                        request,
                        salesAffiliationLoyaltyTier.AffiliationId.ToString(CultureInfo.InvariantCulture),
                        ReasonCodeTableRefType.Affiliation,
                        affiliation.Name,
                        string.Empty,
                        string.Empty,
                        requiredReasonCodes,
                        reasonCodeRequirements,
                        salesAffiliationLoyaltyTier.ReasonCodeLines,
                        null);
                }
            }
            /// <summary>
            /// Adds or updates the reason code lines for affiliation line.
            /// </summary>
            /// <param name="salesAffiliationLoyaltyTier">The sales affiliation line.</param>
            /// <param name="affiliationLoyaltyTier">The cart affiliation line.</param>
            /// <param name="transactionId">The transaction id.</param>
            public static void AddOrUpdateReasonCodeLinesOnAffiliationLine(SalesAffiliationLoyaltyTier salesAffiliationLoyaltyTier, AffiliationLoyaltyTier affiliationLoyaltyTier, string transactionId)
            {
                ThrowIf.Null(salesAffiliationLoyaltyTier, "salesAffiliationLoyaltyTier");
                ThrowIf.Null(affiliationLoyaltyTier, "affiliationLoyaltyTier");
                ThrowIf.NullOrWhiteSpace(transactionId, "transactionId");

                if (affiliationLoyaltyTier.ReasonCodeLines.Any())
                {
                    AddOrUpdateReasonCodeLinesHelper(
                        reasonCodeLinesToUpdate: salesAffiliationLoyaltyTier.ReasonCodeLines,
                        reasonCodeLines: affiliationLoyaltyTier.ReasonCodeLines,
                        transactionId: transactionId,
                        parentLineId: salesAffiliationLoyaltyTier.AffiliationId.ToString(CultureInfo.InvariantCulture),
                        reasonCodeLineType: ReasonCodeLineType.Affiliation);
                }
            }