import { isEmpty } from 'validator';

export const buildLineItems = (lineItems: any) => {
	const productItems = lineItems.productItems;
	const countProductItems = productItems?.length || 0;
	const items = [];
	let categories;

	for(let i = 0; i < countProductItems; i++) {
		categories = productItems[i].categories.toString().split(',').filter((category: string) => !isEmpty(category.trim()));
		let productId = productItems[i].productId.toString().trim();
		let productTitle = productItems[i].productTitle.toString().trim();
		let productUrl = productItems[i].productUrl.toString().trim();
		let variantId = productItems[i].variantId.toString().trim();
		let variantTitle = productItems[i].variantTitle.toString().trim();
		let sku = productItems[i].sku.toString().trim();
		let price = productItems[i].price;
		let quantity = productItems[i].quantity;
		let imageUrl = productItems[i].imageUrl.toString().trim();

		if(isEmpty(variantId)) {
			variantId = productId;
		}

		if(isEmpty(variantTitle)) {
			variantTitle = productTitle;
		}

		items.push({
			product_id: productId,
			product_title: productTitle,
			variant_id: variantId,
			variant_title: variantTitle,
			price,
			quantity,
			...(!isEmpty(productUrl) && { product_url: productUrl }),
			...(!isEmpty(sku) && { sku }),
			...(!isEmpty(imageUrl) && { image_url: imageUrl }),
			categories,
		});
	}

	return items;
}
