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
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; |