Home > Blockchain >  How to send previous items in cart such that my updateCart adds new items on top of previous product
How to send previous items in cart such that my updateCart adds new items on top of previous product

Time:01-19

I am creating a ecommerce product cart, while adding first order it creates order with createOrder and while adding next products it runs updateCart. I have to send the previous items in the cart while running update cart because currently on adding next product it's not working.

This is my service code:

static createOrder(
    order: Order,
    onSuccess: Function,
    one rror: Function,
    onFinal: Function
  ) {
    const orderJson = serialize(Order, order)
    const URL = ApiRoutes.CREATE_ORDER
    axiosInstance
      .post(URL, { "order": orderJson })
      .then((res) => {
        // const data = deserialize(Cart, res.data.order);
        //onSuccess(res.data.success);
      })
      .catch((err) => {
        one rror(err);
      });
  }

  static updateCart(
    order: Order,
    orderId: string,
    onSuccess: Function,

    one rror: Function,
    onFinal: Function
  ) {
    const orderJson = serialize(Order, order)
    const URL = ApiRoutes.UPDATE_CART.replace(":id", `${orderId}`)
    axiosInstance
      .put(URL, { "order": orderJson })
      .then((res) => {
        // const data = deserialize(Cart, res.data.order);
        //onSuccess(res.data.success);
      })
      .catch((err) => {
        one rror(err);
      });
  }

This is how I am calling it:

const addToBasket = () => {
    dispatch({
      type: 'ADD_TO_BASKET',
      item: {
        "id": product.id,
        "title": product.name,
        "price": product.price,
        "image": product.imageUrl,
      },
    });

    // CREATE ORDER ONCE CART IS EMPTY ELSE UPDATE CART

    if (props?.userCart?.orderItems?.length) {
      OrderService.updateCart(
        {
          orderItems: [{

            productId: `${product?.id}`,
            quantity: 1,
            // taxMode:0,
            // taxPercentage:0,
            //discountPercentage: ""
          }]
        },
        props?.userCart?.id,
        () => { },
        () => { },
        () => { },
      )
    } else {
      OrderService.createOrder(
        {
          userId: user?.id,
          storeId: store?.id,
          orderItems: [
            {
              productId: `${product?.id}`,
              quantity: 1,
              taxMode: 0,
              taxPercentage: 0,
              discountPercentage: ""
            }
          ]
        },
        () => { },
        () => { },
        () => { },
      )
    }
  };

CodePudding user response:

Just add previous products to the end of array with spread operator like ...props.userCart.orderItems

OrderService.updateCart(  
 {
              orderItems: [{
    
                productId: `${product?.id}`,
                quantity: 1,
                // taxMode:0,
                // taxPercentage:0,
                //discountPercentage: ""
              }, ...props.userCart.orderItems]
            },
            props?.userCart?.id,
            () => { },
            () => { },
            () => { },
          )
    }
  •  Tags:  
  • Related