var viewModel = (function() { var self = this; selectedUser = ko.observable(new user()); mobileNo = ko.observable(''); mobileOperators = ko.observableArray([ 'GLOBE', 'SMART', 'SUN', 'DITO' ]); mobileOperator = ko.observable(''); rates = ko.observableArray(); selectedRate = ko.observable(new rate()); token = ko.observable(''); password = ko.observable(''); resetText = ko.observable('reset'); showdenom = ko.observable(false); qoute = function(data, event) { $(event.currentTarget).attr("disabled", "disabled"); $(event.currentTarget).html('Processing') var parameters = { '_endpoint': 'load/quote', 'sku': selectedRate().sku, 'msisdn': this.mobileNo(), }; $.ajax({ url: "/restadapter", type: "GET", data: $.param(ko.toJS(parameters)), processData: false, contentType: "application/json", dataType: "json", success: function(result) { $("#btnsendloadnext_div").hide(); $("#password_div").show(); $('#btnsendloadsubmit_div').show(); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardNext'); token(result.data.token); }, error: function(result) { var error = ko.utils.parseJson(result.responseText); var text = ""; $.each(error.message, function(index, val) { text += index + ": " + val + "
"; }); text += ""; toastr.error(text); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardNext'); } }); }; buy = function(data, event) { $(event.currentTarget).attr("disabled", "disabled"); $(event.currentTarget).html('Processing') var parameters = { '_endpoint': 'load/buy', 'token': token, 'password': password }; $.ajax({ url: "/restadapter", type: "POST", data: ko.toJSON(parameters), processData: false, contentType: "application/json", dataType: "json", success: function(result) { toastr.success('Transaction being processed'); selectedUser().moneyWallet((parseFloat(selectedUser().moneyWallet()) - parseFloat(selectedRate().amount())).toFixed(2)); amplify.store("__client", ko.toJS(selectedUser())); $('#btnsendloadsubmit_div').hide() $('#btnsendloaddone_div').show(); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardSubmit'); resetText('Done'); }, error: function(result) { $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardSubmit'); var error = ko.utils.parseJson(result.responseText); var text = ""; $.each(error.message, function(index, val) { text += index + ": " + val + "
"; }); text += ""; toastr.error(text); } }); }; reset = function() { this.mobileNo(''); this.mobileOperator(''); this.rates([]); this.selectedRate(''); this.token(''); this.password(""); this.password(null); this.oldValue = undefined; $("#btnsendloadnext").attr("disabled", false); $("#btnsendloadnext").html('forwardNext'); $("#btnsendloadsubmit").attr("disabled", false); $("#btnsendloadsubmit").html('forwardSubmit'); }; onOperatorChange = function() { $("#denom_amnt").hide(); $("#denom").hide(); var parameters = { '_endpoint': 'rate/user/' + selectedUser().id(), 'size': 500, 'page': 1, 'filter': 'category:' + mobileOperator() + ':=:AND', 'fields': 'rates.sku,amount,facevalue' }; $.ajax({ url: "/restadapter", type: "GET", data: $.param(ko.toJS(parameters)), processData: true, contentType: "application/json", dataType: "json", success: function(result) { ko.utils.arrayForEach(result.data.records, function(model) { rates.push(new rate(model)); }); $("#denom_amnt").show(); $("#denom").show(); }, error: function(result) { var text = ""; $.each(result.responseJSON, function(index, val) { text += index + ": " + val + "
"; }); text += ""; toastr.error(text); } }); return true; }; onMSISDChange = function() { oldValue = typeof(oldValue) == 'undefined' ? '' : oldValue; if (oldValue != this.mobileNo() && this.mobileNo().length == 12) { rates([]); mobileOperator(''); oldValue = this.mobileNo(); var parameters = { '_endpoint': 'load/operator_lookup', 'msisdn': this.mobileNo() }; mobileOperator('PROCESSING...'); $.ajax({ url: "/restadapter", type: "GET", data: $.param(ko.toJS(parameters)), processData: false, contentType: "application/json", dataType: "json", success: function(result) { mobileOperator(result.data.operatorType); /* if (result.data.subscriptionType == "POSTPAID") { toastr.error("Mobile number should be a prepaid number"); mobileOperator(''); } else { */ var parameters = { '_endpoint': 'rate/user/' + selectedUser().id(), 'size': 500, 'page': 1, 'filter': 'category:' + result.data.operatorType + ':=:AND', 'fields': 'rates.sku,amount,facevalue' }; $.ajax({ url: "/restadapter", type: "GET", data: $.param(ko.toJS(parameters)), processData: true, contentType: "application/json", dataType: "json", success: function(result) { rates([]); ko.utils.arrayForEach(result.data.records, function(model) { rates.push(new rate(model)); }); }, error: function(result) { var text = ""; $.each(result.responseJSON, function(index, val) { text += index + ": " + val + "
"; }); text += ""; toastr.error(text); } }); //} }, error: function(result) { var text = ""; $.each(result.data.records, function(index, val) { text += index + ": " + val + "
"; }); text += ""; toastr.error(text); } }); } return true; }; })(); ko.bindingHandlers.executeOnEnter = { init: function(element, valueAccessor, allBindingsAccessor, viewModel) { var allBindings = allBindingsAccessor(); $(element).keypress(function(event) { var keyCode = (event.which ? event.which : event.keyCode); allBindings.executeOnEnter.call(viewModel); return true; }); } }; (function($) { $.fn.inputFilter = function(inputFilter) { return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function(event) { if (inputFilter(this.value)) { this.oldValue = this.value; this.oldSelectionStart = this.selectionStart; this.oldSelectionEnd = this.selectionEnd; } else if (this.hasOwnProperty("oldValue")) { this.value = this.oldValue; this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd); } }); }; }(jQuery)); ko.bindingHandlers.MSISDN = { init: function(element, valueAccessor) { $(element).inputFilter(function(value) { value = value.replace(/\D/g, ''); var isnum = /^\d+$/.test(value); if ((isnum && value.length < 13) || (event.keyCode == '8')) { value = value.replace(/[^\d\.]/g, ""); if (value.length > 9 && value.length <= 12) { if (value.length <= 12 && value.charAt(0) == '9') { var number = value.substr(value.length - 10); value = "63" + number; } if (value.length <= 12 && value.charAt(0) == '0') { var number = value.substr(value.length - 9); value = "63" + number; } } } element.value = value; if (event.keyCode != '8') return /^(0|9|6|(63)|(09)|(639)|$)[0-9]{0,9}$/.test(value); }); } }; ko.applyBindings(viewModel);