Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXTREME 13.1 Demos/DXSK8/DXSK8.Phone/data/
Upload File :
Current File : C:/Users/Public/Documents/DXTREME 13.1 Demos/DXSK8/DXSK8.Phone/data/OrderItems.js

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);
})();