Exemplo n.º 1
0
        public Guid CreateOrUpdateBasket(Guid userId, string branchId, Basket basket, List <LineItem> items, bool runPipelines = false)
        {
            var updateOrder = new CommerceUpdate <Basket,
                                                  CommerceModelSearch <Basket>,
                                                  CommerceBasketUpdateOptionsBuilder>();

            updateOrder.SearchCriteria.Model.UserId     = userId.ToString();
            updateOrder.SearchCriteria.Model.BasketType = 0;

            if (!string.IsNullOrEmpty(basket.Id))
            {
                updateOrder.SearchCriteria.Model.Id = basket.Id;
            }
            else
            {
                updateOrder.SearchCriteria.Model.Name = basket.Name;
            }
            updateOrder.Model = basket;
            updateOrder.UpdateOptions.ToOptions().ReturnModel = (new Basket()).ToCommerceEntity();
            updateOrder.UpdateOptions.RefreshBasket = runPipelines;


            if (items != null)
            {
                foreach (var item in items)
                {
                    if (string.IsNullOrEmpty(item.Id) || item.Id == Guid.Empty.ToCommerceServerFormat())
                    {
                        var lineItemCreate = new CommerceCreateRelatedItem <LineItem>(Basket.RelationshipName.LineItems);
                        lineItemCreate.Model = item;
                        updateOrder.RelatedOperations.Add(lineItemCreate);
                    }
                    else
                    {
                        var lineItemUpdate = new CommerceUpdateRelatedItem <LineItem>(Basket.RelationshipName.LineItems);
                        lineItemUpdate.SearchCriteria.Model.Id = item.Id;
                        lineItemUpdate.Model = item;
                        updateOrder.RelatedOperations.Add(lineItemUpdate);
                    }
                }
            }

            // create the request
            var response = FoundationService.ExecuteRequest(updateOrder.ToRequest());

            if (response.OperationResponses.Count != 1)
            {
                return(Guid.Empty);
            }

            return(((CommerceUpdateOperationResponse)response.OperationResponses[0]).CommerceEntities[0].Id.ToGuid());
        }
Exemplo n.º 2
0
        public void UpdateItem(Guid userId, Guid cartId, LineItem updatedItem, bool runPipelines = false)
        {
            var updateOrder = new CommerceUpdate <Basket,
                                                  CommerceModelSearch <Basket>,
                                                  CommerceBasketUpdateOptionsBuilder>();

            updateOrder.SearchCriteria.Model.UserId     = userId.ToString();
            updateOrder.SearchCriteria.Model.BasketType = 0;
            updateOrder.SearchCriteria.Model.Id         = cartId.ToCommerceServerFormat();
            updateOrder.UpdateOptions.RefreshBasket     = runPipelines;

            var lineItemUpdate = new CommerceUpdateRelatedItem <LineItem>(Basket.RelationshipName.LineItems);

            lineItemUpdate.SearchCriteria.Model.Id = updatedItem.Id;
            lineItemUpdate.Model = updatedItem;
            updateOrder.RelatedOperations.Add(lineItemUpdate);

            FoundationService.ExecuteRequest(updateOrder.ToRequest());
        }
        protected override void UpdateRelatedItem(CommerceUpdateRelatedItem updateRelatedItemOperation)
        {
            OrderForm orderForm = CachedOrderGroup.GetDefaultOrderForm();

            CommerceEntity model     = updateRelatedItemOperation.GetModel(updateRelatedItemOperation.Model.ModelName);
            string         paymentId = GetSearchModelId(updateRelatedItemOperation, MetadataDefinitions.Payment.EntityName, true);

            if (!String.IsNullOrEmpty(paymentId))
            {
                Payment updatingPayment = GetPaymentFromCachedOrderGroup(paymentId);
                Translate(model, updatingPayment);
            }
            else
            {
                foreach (Payment payment in orderForm.Payments)
                {
                    Translate(model, payment);
                }
            }
        }
        protected override void UpdateRelatedItem(CommerceUpdateRelatedItem updateRelatedItemOperation)
        {
            OrderForm orderForm = CachedOrderGroup.GetDefaultOrderForm();

            CommerceEntity model      = updateRelatedItemOperation.GetModel(MetadataDefinitions.Shipment.EntityName);
            string         shipmentId = GetSearchModelId(updateRelatedItemOperation, MetadataDefinitions.Shipment.EntityName, true);

            if (!String.IsNullOrEmpty(shipmentId))
            {
                Shipment updatingShipment = GetShipmentFromCachedOrderGroup(shipmentId);
                Translator.ToExternalEntity(model, updatingShipment);
                UpdateShippingLineItemsAssociation(updatingShipment, orderForm);
            }
            else
            {
                foreach (Shipment shipment in orderForm.Shipments)
                {
                    Translator.ToExternalEntity(model, shipment);
                }
            }
        }