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);

            cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings());

            return(validationIssues);
        }
Exemplo n.º 2
0
        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 virtual FoundationContact GetContactById(string contactId)
        {
            if (string.IsNullOrEmpty(contactId))
            {
                return(null);
            }

            var contact = _customerContext.GetContactById(new Guid(contactId));

            return(contact != null ? new FoundationContact(contact) : null);
        }
        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);
        }
Exemplo n.º 5
0
        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);
        }
        /// <summary>
        /// Map credit card of commerce core to credit card view model
        /// </summary>
        /// <param name="creditCard">Source credit card</param>
        /// <param name="creditCardModel">Target credit card</param>
        public void MapToModel(Mediachase.Commerce.Customers.CreditCard creditCard, ref CreditCardModel creditCardModel)
        {
            creditCardModel.CreditCardType         = (Mediachase.Commerce.Customers.CreditCard.eCreditCardType)creditCard.CardType;
            creditCardModel.CreditCardNumber       = creditCard.CreditCardNumber;
            creditCardModel.CreditCardSecurityCode = creditCard.SecurityCode;
            creditCardModel.ExpirationMonth        = creditCard.ExpirationMonth;
            creditCardModel.ExpirationYear         = creditCard.ExpirationYear;
            creditCardModel.CreditCardId           = creditCard.PrimaryKeyId.ToString();

            if (creditCard.OrganizationId != null)
            {
                creditCardModel.Organization = _organizationService.GetOrganizationModel((Guid)creditCard.OrganizationId);
            }
            else if (creditCard.ContactId != null)
            {
                creditCardModel.CurrentContact = _customerContext.GetContactById(new Guid(creditCard.ContactId.ToString()));
            }
        }