Mini Kabibi Habibi
window.DXSK8 = window.DXSK8 || {};
window.DXSK8.Phone = window.DXSK8.Phone || {};
window.DXSK8.Phone.db = window.DXSK8.Phone.db || {};
(function() {
var db = {};
db.loadOrderItemsById = function(itemId, success, fail) {
DXSK8.db.OrderItems
.load({
filter: ["Id", itemId],
select: [
"Id",
"State",
"Order.Id",
"Order.State",
"Product.Id",
"Product.Type.Id",
"Product.Name",
"Product.Description"
]
})
.done(success)
.fail(fail);
};
db.updateOrderItemState = function(itemId, state, success) {
DXSK8.db.OrderItems
.update(itemId, {
State: state
})
.done(success);
};
db.getOrderItemDataSource = function(orderId) {
return DXSK8.db.OrderItems.toDataSource({
filter: ["Order.Id", orderId],
select: [
"Id",
"State",
"Product.Id",
"Product.Type.Id",
"Product.Name",
"Product.Description"
],
updateMode: "none",
map: mapOrderItems
});
};
function mapOrderItems(orderItem) {
var item = {
id: orderItem.Id,
imageClass: "type-" + orderItem.Product.Type.Id,
name: orderItem.Product.Name,
description: orderItem.Product.Description,
image: DXSK8.getElementImageUrl(orderItem.Product),
quantity: ko.observable(0),
state: ko.observable(orderItem.State == 1 ? "use" : "")
};
item.cssClass = ko.computed(function() {
return "product-state-" + item.state();
});
DXSK8.Phone.db.loadInventoriesByProduct(
orderItem.Product.Id,
function(inventories) { inventoriesLoadComplete.call(this, inventories, item); },
function(ex) { });
return item;
}
function inventoriesLoadComplete(inventories, orderItem) {
if(inventories.length > 0) {
orderItem.quantity(inventories[0].Quantity);
if(orderItem.state() !== "use" && inventories[0].Quantity === 0) {
orderItem.state("not-found");
}
}
}
$.extend(DXSK8.Phone.db, db);
})();