All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.resources.ServiceProvider.commerce-delivery-cart.v1.0.Cart.js Maven / Gradle / Ivy

/**
 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
 */

import AJAX from '../../../utilities/AJAX/index';

const CART_COMMENTS_PATH = '/cart-comments';
const CARTS_PATH = '/carts';
const CHANNELS_PATH = '/channels';

const VERSION = 'v1.0';

function resolveCartsPath(basePath = '', cartId) {
	return `${basePath}${VERSION}${CARTS_PATH}/${cartId}`;
}

function resolveCartsBatchPath(basePath = '') {
	return `${basePath}${VERSION}${CARTS_PATH}/batch`;
}
function resolveChannelsPath(basePath = '', channelId) {
	return `${basePath}${VERSION}${CHANNELS_PATH}/${channelId}`;
}

function resolveCartsByAccountIdAndChannelIdPath(
	basePath = '',
	accountId,
	channelId,
	searchParams
) {
	const url = new URL(
		`${Liferay.ThemeDisplay.getPathContext()}${resolveChannelsPath(
			basePath,
			channelId
		)}/account/${accountId}${CARTS_PATH}`,
		Liferay.ThemeDisplay.getPortalURL()
	);

	if (searchParams) {
		Object.keys(searchParams).forEach((searchParamKey) => {
			url.searchParams.set(searchParamKey, searchParams[searchParamKey]);
		});
	}

	return url.pathname + url.search;
}

function resolveCartCommentsPath(basePath = '', cartCommentId) {
	return `${basePath}${VERSION}${CART_COMMENTS_PATH}/${cartCommentId}`;
}

export default function Cart(basePath) {
	return {
		addAttachment: (cartId, json) =>
			AJAX.POST(
				`${resolveCartsPath(basePath, cartId)}/attachments/by-base64`,
				json
			),

		cartsByAccountIdAndChannelIdURL: (accountId, channelId) =>
			resolveCartsByAccountIdAndChannelIdPath(
				basePath,
				accountId,
				channelId
			),

		checkoutCartById: (cartId) =>
			AJAX.POST(`${resolveCartsPath(basePath, cartId)}/checkout`),

		createCartByChannelId: (channelId, json) =>
			AJAX.POST(
				`${resolveChannelsPath(
					basePath,
					channelId
				)}${CARTS_PATH}?nestedFields=cartItems`,
				json
			),

		createCommentsByCartId: (cartId, json) =>
			AJAX.POST(resolveCartsPath(basePath, cartId) + '/comments', json),

		createCouponCodeByCartId: (cartId, json) =>
			AJAX.POST(
				`${resolveCartsPath(basePath, cartId)}/coupon-code`,
				json
			),

		deleteAttachment: (cartId, attachmentId) =>
			AJAX.DELETE(
				`${resolveCartsPath(basePath, cartId)}/attachments/${attachmentId}`
			),

		deleteCartById: (cartId) =>
			AJAX.DELETE(resolveCartsPath(basePath, cartId)),

		deleteCartsById: (items) =>
			AJAX.DELETE(resolveCartsBatchPath(basePath), {
				body: JSON.stringify(items),
			}),

		deleteCommentsByCartId: (cartCommentId) =>
			AJAX.DELETE(resolveCartCommentsPath(basePath, cartCommentId)),

		executeCartTransitionsById: (cartId, json) =>
			AJAX.POST(
				resolveCartsPath(basePath, cartId) + '/cart-transitions',
				json
			),

		getCartById: (cartId) => AJAX.GET(resolveCartsPath(basePath, cartId)),

		getCartByIdWithItems: (cartId) =>
			AJAX.GET(
				resolveCartsPath(basePath, cartId) + '?nestedFields=cartItems'
			),

		getCartDeliveryTermsPage: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/delivery-terms'),

		getCartPaymentMethodsPage: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/payment-methods'),

		getCartPaymentTermsPage: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/payment-terms'),

		getCartShippingMethodsPage: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/shipping-methods'),

		getCartTransitionsById: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/cart-transitions'),

		getCartsByAccountIdAndChannelId: (accountId, channelId, searchParams) =>
			AJAX.GET(
				resolveCartsByAccountIdAndChannelIdPath(
					basePath,
					accountId,
					channelId,
					searchParams
				)
			),

		getCommentsByCartId: (cartId) =>
			AJAX.GET(resolveCartsPath(basePath, cartId) + '/comments'),

		patchCommentsByCartId: (cartId) =>
			AJAX.PATCH(resolveCartsPath(basePath, cartId) + '/comments'),

		replaceCartById: (cartId, json) =>
			AJAX.PUT(resolveCartsPath(basePath, cartId), json),

		updateCartById: (cartId, jsonProps, params) =>
			AJAX.PATCH(
				resolveCartsPath(basePath, cartId) + '?nestedFields=cartItems',
				jsonProps,
				{},
				params
			),
	};
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy