You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package utils;
import Math; using Lambda;
import Common;
class CartUtils { public static function addToCart(order:OrderSimple, productToAdd:ProductInfo, quantity:Int):OrderSimple { var products = order.products.copy(); var total = order.total;
var existingProduct = products.find(function(p) { return p.product.id == productToAdd.id; });
if (existingProduct == null) products.push({ product: productToAdd, quantity: quantity }); else existingProduct.quantity += quantity;
total += quantity * productToAdd.price; total = Math.round(total * 100) / 100; // to avoid calculation errors
return { products: products, total: total }; }
public static function removeFromCart(order:OrderSimple, productToRemove:ProductInfo, ?quantity:Int):OrderSimple { var products = order.products.copy(); var total = order.total;
var existingProduct = products.find(function(p) { return p.product.id == productToRemove.id; });
if (quantity == null) quantity = existingProduct.quantity;
if (existingProduct == null) throw "Can't remove a non existing product"; else if (quantity >= existingProduct.quantity) products.remove(existingProduct) else existingProduct.quantity -= quantity;
if (products.length == 0) total = 0; else { total -= Math.min(quantity, existingProduct.quantity) * productToRemove.price; total = Math.round(total * 100) / 100; // to avoid calculation errors }
return { products: products, total: total }; } }
|