You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.5 KiB
JavaScript

import isUndefined from './util/isUndefined.js';
import _LineItem from './_LineItem.js';
import _Message from './_Message.js';
import _User from './_User.js';
import remove from './util/remove.js';
import removeByIndex from './util/removeByIndex.js';
var _Cart = {};
_Cart.updateQuantityOfItem = function(item, quantity){
/*
var possible_lineitem = _Cart.lineItemOfItem(item); // _Cart.current.lineitems.find(function(lineitem){ return lineitem.item.id === item.id; });
if(isUndefined(possible_lineitem)){
possible_lineitem = _LineItem.createFromItem(item);
// possible_lineitem = _Cart.add(item);
}
possible_lineitem.quantity = quantity;
*/
return m.request({
method: 'POST',
url: '/cgi/updateitemquantityincart',
body: {
session_hash: _User.session_hash,
item_id: item.id,
quantity: quantity
}
})
.then(function(res){
if(res.success === true){
res.lineitems.forEach(function(lineitem, index){
lineitem.item_id = _DB.integrate(lineitem.item_id).id // at first item_id has the actual object, which we integrate into _DB, but then we set it to the ID as is expected
res.lineitems[index] = _DB.integrate(lineitem).id;
});
_Cart.current.lineitem_ids = res.lineitems; // at this point, res.lineitems contains only IDs
}
else{
_Message.addError("There was an error adding to cart.");
}
});
};
_Cart.removeLineItemOfItem = function(item){
// TODO: do this on server-side, and return updated cart record with updated lineitem_ids
remove(_Cart.current.lineitem_ids, function(lineitem_id){ return lineitem_id === item.id; });
};
_Cart.removeLineItem = function(index){
// TODO: do this on server-side, and return updated cart record with updated lineitem_ids
removeByIndex(_Cart.current.lineitem_ids, index);
};
_Cart.lineItemOfItem = function(item){
if(_Cart.current !== null){
return _DB.getRecord( _Cart.current.lineitem_ids.find(function(lineitem_id){ return _DB.getRecord(lineitem_id).item_id === item.id; }) );
}
};
_Cart.placeOrder = function(){
m.request({
method: 'POST',
url: '/cgi/placeorder',
body: {
session_hash: _User.session_hash
}})
.then(function(res){
if(res.success){
_Message.addNotification("Order #"+ res.order_id +" Received!");
_Cart.current = res.new_cart_record;
_Cart.current.lineitem_ids = [];
_DB.integrate(_Cart.current)
}
});
};
_Cart.current = null; //_Cart.new();
export default _Cart;