public void Can_not_add_duplicate_giftCardCouponCodes() { var customer = new Customer(); customer.ApplyGiftCardCouponCode("code1"); customer.ApplyGiftCardCouponCode("code2"); customer.ApplyGiftCardCouponCode("code1"); var codes = customer.ParseAppliedGiftCardCouponCodes(); codes.Length.ShouldEqual(2); codes[0].ShouldEqual("code1"); codes[1].ShouldEqual("code2"); }
/// <summary> /// Removes a coupon code /// </summary> /// <param name="customer">Customer</param> /// <param name="couponCode">Coupon code to remove</param> /// <returns>New coupon codes document</returns> public static void RemoveGiftCardCouponCode(this Customer customer, string couponCode) { //get applied coupon codes var existingCouponCodes = customer.ParseAppliedGiftCardCouponCodes(); //clear them customer.GiftCardCouponCodes = string.Empty; //save again except removed one foreach (string existingCouponCode in existingCouponCodes) { if (!existingCouponCode.Equals(couponCode, StringComparison.InvariantCultureIgnoreCase)) { customer.ApplyGiftCardCouponCode(existingCouponCode); } } }
/// <summary> /// Get active gift cards that are applied by a customer /// </summary> /// <param name="customer">Customer</param> /// <returns>Active gift cards</returns> public virtual IList<GiftCard> GetActiveGiftCardsAppliedByCustomer(Customer customer) { var result = new List<GiftCard>(); if (customer == null) return result; string[] couponCodes = customer.ParseAppliedGiftCardCouponCodes(); foreach (var couponCode in couponCodes) { var giftCards = GetAllGiftCards(null, null, null, true, couponCode, 0, int.MaxValue); foreach (var gc in giftCards) { if (gc.IsGiftCardValid()) result.Add(gc); } } return result; }
/// <summary> /// Migrate shopping cart /// </summary> /// <param name="fromCustomer">From customer</param> /// <param name="toCustomer">To customer</param> /// <param name="includeCouponCodes">A value indicating whether to coupon codes (discount and gift card) should be also re-applied</param> public virtual void MigrateShoppingCart(Customer fromCustomer, Customer toCustomer, bool includeCouponCodes) { if (fromCustomer == null) throw new ArgumentNullException("fromCustomer"); if (toCustomer == null) throw new ArgumentNullException("toCustomer"); if (fromCustomer.ID == toCustomer.ID) return; //the same customer //shopping cart items var fromCart = fromCustomer.ShoppingCartItems.ToList(); for (int i = 0; i < fromCart.Count; i++) { var sci = fromCart[i]; AddToCart(toCustomer, sci.Product, sci.ShoppingCartType, sci.StoreId, sci.AttributesXml, sci.CustomerEnteredPrice, sci.RentalStartDateUtc, sci.RentalEndDateUtc, sci.Quantity, false); } for (int i = 0; i < fromCart.Count; i++) { var sci = fromCart[i]; DeleteShoppingCartItem(sci); } //migrate gift card and discount coupon codes if (includeCouponCodes) { //discount var discountCouponCode = fromCustomer.GetAttribute<string>(SystemCustomerAttributeNames.DiscountCouponCode); if (!String.IsNullOrEmpty(discountCouponCode)) _genericAttributeService.SaveAttribute(toCustomer, SystemCustomerAttributeNames.DiscountCouponCode, discountCouponCode); //gift card foreach (var gcCode in fromCustomer.ParseAppliedGiftCardCouponCodes()) toCustomer.ApplyGiftCardCouponCode(gcCode); //save customer _customerService.UpdateCustomer(toCustomer); } }
/// <summary> /// Get active gift cards that are applied by a customer /// </summary> /// <param name="customer">Customer</param> /// <returns>Active gift cards</returns> public virtual IList<GiftCard> GetActiveGiftCardsAppliedByCustomer(Customer customer) { var result = new List<GiftCard>(); if (customer == null) return result; string[] couponCodes = customer.ParseAppliedGiftCardCouponCodes(); foreach (var couponCode in couponCodes) { if (couponCode.Length > 0) { var giftCards = GetAllGiftCards(isGiftCardActivated: true, giftCardCouponCode: couponCode); foreach (var gc in giftCards) { if (gc.IsGiftCardValid()) result.Add(gc); } } } return result; }