Mini Kabibi Habibi

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

DXSK8.Phone.ProductDetails = function (params) {
    var utils = DXSK8.Phone.utils,
        orderId,
        inventoryId;

    var viewModel = {
        name: ko.observable(),
        description: ko.observable(),
        image: ko.observable(),
        state: ko.observable(),
        quantity: ko.observable(),
        imageClass: ko.observable(),
        complete: function() {
            viewModel.state("use");
            DXSK8.Phone.db.updateOrderItemState(Number(params.id), 1, viewModel.handleBack);
        },
        handleBack: function() {
            DXSK8.app.navigate("OrderItems/" + orderId);
        },
        orderState: ko.observable()
    };

    viewModel.showCompleteButton = ko.computed(function() {
        return viewModel.orderState() != 3 && viewModel.state() != "use" && viewModel.state() != "not-found";
    });

    viewModel.stateCssClass = ko.computed(function () {
        return "product-state-" + viewModel.state();
    });

    function orderItemsLoadComplete(orderItems) {
        var orderItem = orderItems[0];
        orderId = orderItem.Order.Id;

        viewModel.orderState(Number(orderItem.Order.State));
        viewModel.name(orderItem.Product.Name);
        viewModel.description(utils.createProductFeatures(orderItem.Product.Description));
        viewModel.image(DXSK8.getElementImageUrl(orderItem.Product));
        viewModel.state(orderItem.State === 1 ? "use" : "");
        viewModel.imageClass("type-" + orderItem.Product.Type.Id);

        DXSK8.Phone.db.loadInventoriesByProduct(orderItem.Product.Id, inventoriesLoadComplete, function(ex) { });
    }

    function inventoriesLoadComplete(inventories) {
        if(inventories.length > 0) {
            inventoryId = inventories[0].Id;
            if(viewModel.state() !== "use" && inventories[0].Quantity === 0) {
                viewModel.state("not-found");
            }
            viewModel.quantity(inventories[0].Quantity);
        }
    }

    DXSK8.Phone.db.loadOrderItemsById(Number(params.id), orderItemsLoadComplete, function(ex) { });

    return viewModel;
};