/// <summary> /// Issues a new loyalty card. /// </summary> /// <param name="loyaltyCardNumber">The loyalty card number.</param> /// <param name="cardTenderType">The loyalty card tender type.</param> /// <param name="partyRecordId">The record identifier of the party of the card owner.</param> /// <param name="channelRecordId">The record identifier of the channel.</param> /// <returns>The created loyalty card.</returns> public LoyaltyCard IssueLoyaltyCard(string loyaltyCardNumber, LoyaltyCardTenderType cardTenderType, long partyRecordId, long channelRecordId) { var parameters = new object[] { loyaltyCardNumber, (int)cardTenderType, partyRecordId, channelRecordId }; var data = this.InvokeMethod(IssueLoyaltyCardMethodName, parameters); // Translate the result data into a loyalty card object with card tiers. var cardData = (object[])data[0]; var cardTierListData = (object[])data[1]; var loyaltyCard = new LoyaltyCard(); loyaltyCard.RecordId = (long)cardData[0]; loyaltyCard.CardNumber = (string)cardData[1]; loyaltyCard.CardTenderType = (LoyaltyCardTenderType)cardData[2]; loyaltyCard.PartyRecordId = (long)cardData[3]; foreach (var cardTierListDataRow in cardTierListData) { var cardTierData = (object[])cardTierListDataRow; long loyaltyGroupRecordId = (long)cardTierData[1]; LoyaltyGroup loyaltyGroup = loyaltyCard.LoyaltyGroups.SingleOrDefault(lg => lg.RecordId == loyaltyGroupRecordId); if (loyaltyGroup == null) { loyaltyGroup = new LoyaltyGroup(); loyaltyGroup.RecordId = loyaltyGroupRecordId; loyaltyCard.LoyaltyGroups.Add(loyaltyGroup); } var cardTier = new LoyaltyCardTier(); cardTier.RecordId = (long)cardTierData[0]; cardTier.LoyaltyTierRecordId = (long)cardTierData[3]; cardTier.ValidFrom = string.IsNullOrWhiteSpace(cardTierData[4].ToString()) ? DateTimeOffset.MinValue : Convert.ToDateTime(cardTierData[4]); cardTier.ValidTo = string.IsNullOrWhiteSpace(cardTierData[5].ToString()) ? DateTimeOffset.MaxValue : Convert.ToDateTime(cardTierData[5]); loyaltyGroup.LoyaltyCardTiers.Add(cardTier); } return(loyaltyCard); }
/// <summary> /// Initializes the specified tier. /// </summary> /// <param name="tier">The tier.</param> /// <param name="cardTier">The card tier.</param> public virtual void Initialize(LoyaltyTier tier, LoyaltyCardTier cardTier) { Assert.ArgumentNotNull(tier, "tier"); this.TierId = tier.TierId; this.Description = tier.Description; this.TierLevel = tier.TierLevel.ToString(Sitecore.Context.Language.CultureInfo); this.IsElegible = false; if (cardTier == null) { return; } this.ValidFrom = cardTier.ValidFrom.ToDisplayedDate(); this.ValidTo = cardTier.ValidTo.ToDisplayedDate(); this.IsElegible = true; }
/// <summary> /// Converts the loyalty card tier into a data row. /// </summary> /// <param name="table">The data table.</param> /// <param name="loyaltyCard">The loyalty card.</param> /// <param name="loyaltyGroup">The card loyalty group.</param> /// <param name="loyaltyCardTier">The loyalty card tier.</param> /// <returns>The data row.</returns> private static DataRow ConvertLoyaltyCardTierToDataRow(DataTable table, LoyaltyCard loyaltyCard, LoyaltyGroup loyaltyGroup, LoyaltyCardTier loyaltyCardTier) { DataRow row = table.NewRow(); row[LoyaltySqlServerDataService.RecIdColumn] = loyaltyCardTier.RecordId; row[LoyaltySqlServerDataService.AffiliationColumn] = loyaltyGroup.RecordId; row[LoyaltySqlServerDataService.LoyaltyCardColumn] = loyaltyCard.RecordId; row[LoyaltySqlServerDataService.LoyaltyTierColumn] = loyaltyCardTier.LoyaltyTierRecordId; row[LoyaltySqlServerDataService.ValidFromColumn] = loyaltyCardTier.ValidFrom.DateTime; row[LoyaltySqlServerDataService.ValidToColumn] = loyaltyCardTier.ValidTo.DateTime; return(row); }