﻿Type.registerNamespace("WantTheLook.Core.Basket.Controller");
Type.registerNamespace("WantTheLook.Core.Basket.Controller.Constructor");

WantTheLook.Core.Basket.Controller.Constructor = $.Class.extend({
    CallbackMethod: null,
    ErrorCallback: null,
    init: function() {

    },
    AddToBasket: function(productId, variationId, quantity, callback, errorCallback) {
        this.CallbackMethod = callback;
        this.ErrorCallback = errorCallback;
        dotCommerce.Clients.WantTheLook.Shop.Resources.Services.Basket.AddToBasket(productId, variationId, quantity, this.AjaxSuccess.bind(this), this.AjaxFail.bind(this), this.AjaxTimeout.bind(this));
    },
    RemoveFromBasket: function(OrderItemId, callback, errorCallback) {
        this.CallbackMethod = callback;
        this.ErrorCallback = errorCallback;
        dotCommerce.Clients.WantTheLook.Shop.Resources.Services.Basket.RemoveFromBasket(OrderItemId, this.AjaxSuccess.bind(this), this.AjaxFail.bind(this), this.AjaxTimeout.bind(this));
    },
    AjaxSuccess: function(e) {
        this.CallbackMethod(e);
    },
    AjaxFail: function(e) {
        alert('Something went wrong: ' + e.get_message());
        this.ErrorCallback();
    },
    AjaxTimeout: function(e) {
        alert('Something timed out');
        this.ErrorCallback();
    }
});

$(document).ready(function() {
    WantTheLook.Core.Basket.Controller = new WantTheLook.Core.Basket.Controller.Constructor();
});
