public Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart) { if (cart.Name.Equals(DefaultWishListName)) { return(new Dictionary <ILineItem, List <ValidationIssue> >()); } var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); ApplyDiscounts(cart); // Try to validate gift items inventory and don't catch validation issues. cart.UpdateInventoryOrRemoveLineItems((item, issue) => { if (!item.IsGift) { validationIssues.AddValidationIssues(item, issue); } else { validationIssues.AddValidationIssues(item, ValidationIssue.RemovedGiftDueToInsufficientQuantityInInventory); } }, _inventoryProcessor); return(validationIssues); }
public static Dictionary <ILineItem, IList <ValidationIssue> > ValidateCart(this ICart cart) { var lineItemValidator = ServiceLocator.Current.GetInstance <ILineItemValidator>(); var placedPriceProcessor = ServiceLocator.Current.GetInstance <IPlacedPriceProcessor>(); var inventoryProcessor = ServiceLocator.Current.GetInstance <IInventoryProcessor>(); var promotionEngine = ServiceLocator.Current.GetInstance <IPromotionEngine>(); /* if (cart.Name.Equals(DefaultWishListName)) * { * return new Dictionary<ILineItem, List<ValidationIssue>>(); * }*/ var validationIssues = new Dictionary <ILineItem, IList <ValidationIssue> >(); cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(CustomerContext.Current.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), inventoryProcessor); cart.ApplyDiscounts(promotionEngine, new PromotionEngineSettings()); // Try to validate gift items inventory and don't catch validation issues. cart.UpdateInventoryOrRemoveLineItems((item, issue) => { }, inventoryProcessor); return(validationIssues); }
public virtual Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart) { var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); return(validationIssues); }
public void ValidateAndApplyCampaigns() { var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); _cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); _cart.UpdatePlacedPriceOrRemoveLineItems(CustomerContext.Current.GetContactById(_cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); _cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); _cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); _orderRepository.Save(_cart); }
private Dictionary <ILineItem, List <ValidationIssue> > ValidatePurchaseOrder(IPurchaseOrder purchaseOrder) { var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); purchaseOrder.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(purchaseOrder.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); purchaseOrder.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue)); purchaseOrder.AdjustInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue)); purchaseOrder.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); return(validationIssues); }
public IDictionary <ILineItem, IList <ValidationIssue> > RequestInventory(ICart cart) { var validationIssues = new Dictionary <ILineItem, IList <ValidationIssue> >(); cart.AdjustInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); return(validationIssues); }
public Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart) { if (cart.Name.Equals(DefaultWishListName)) { return(new Dictionary <ILineItem, List <ValidationIssue> >()); } var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); return(validationIssues); }
public Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart) { var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); if (cart.Name.Equals(DefaultWishListName)) { cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); return(validationIssues); } cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); var shipments = cart.GetFirstForm().Shipments; foreach (var shipment in shipments) { var dynamicLineItems = shipment.LineItems.Where(x => !string.IsNullOrEmpty(x.Properties[VariantOptionCodesProperty]?.ToString())); foreach (var item in dynamicLineItems) { var dynamicCodesStr = item.Properties[VariantOptionCodesProperty].ToString(); var dynamicCodes = dynamicCodesStr.Split(','); var contentLink = _referenceConverter.GetContentLink(item.Code); var variant = _contentLoader.Get <IContent>(contentLink) as DynamicVariant; var dynamicVariants = variant.VariantOptions.Where(x => dynamicCodes.Contains(x.Code)); var totalDynamicVariantsPrice = dynamicVariants.Sum(x => x.Prices.FirstOrDefault(p => p.Currency == cart.Currency.CurrencyCode).Amount); item.Properties["BasePrice"] = item.PlacedPrice; item.Properties["OptionPrice"] = totalDynamicVariantsPrice; item.PlacedPrice += totalDynamicVariantsPrice; cart.UpdateLineItemQuantity(shipment, item, item.Quantity); } } cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); return(validationIssues); }
public Dictionary<ILineItem, List<ValidationIssue>> RequestInventory(ICart cart) { var validationIssues = new Dictionary<ILineItem, List<ValidationIssue>>(); cart.AdjustInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); return validationIssues; }
public Dictionary<ILineItem, List<ValidationIssue>> ValidateCart(ICart cart) { if (cart.Name.Equals(DefaultWishListName)) { return new Dictionary<ILineItem, List<ValidationIssue>>(); } var validationIssues = new Dictionary<ILineItem, List<ValidationIssue>>(); cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator); cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor); cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); return validationIssues; }