36 lines
764 B
JavaScript
36 lines
764 B
JavaScript
|
var loopback = require('../../');
|
||
|
|
||
|
var CartItem = exports.CartItem = loopback.Model.extend('CartItem', {
|
||
|
tax: {type: Number, default: 0.1},
|
||
|
price: Number,
|
||
|
item: String,
|
||
|
qty: {type: Number, default: 0},
|
||
|
cartId: Number
|
||
|
});
|
||
|
|
||
|
CartItem.sum = function(cartId, callback) {
|
||
|
this.find({where: {cartId: 1}}, function(err, items) {
|
||
|
var total = items
|
||
|
.map(function(item) {
|
||
|
return item.total();
|
||
|
})
|
||
|
.reduce(function(cur, prev) {
|
||
|
return prev + cur;
|
||
|
}, 0);
|
||
|
|
||
|
callback(null, total);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
loopback.remoteMethod(
|
||
|
CartItem.sum,
|
||
|
{
|
||
|
accepts: {arg: 'cartId', type: 'number'},
|
||
|
returns: {arg: 'total', type: 'number'}
|
||
|
}
|
||
|
);
|
||
|
|
||
|
CartItem.prototype.total = function() {
|
||
|
return this.price * this.qty * 1 + this.tax;
|
||
|
}
|