var viewModel = (function() { var self = this; selectedUser = ko.observable(new user()); mobileNo = ko.observable(''); amount = ko.observable(); charges = ko.observable(new charges()); token = ko.observable(''); password = ko.observable(''); resetText = ko.observable('reset'); total_payment = ko.observable(''); convenience_fee = ko.observable(''); qoute = function(data, event) { $(event.currentTarget).attr("disabled", "disabled"); $(event.currentTarget).html('Processing') var parameters = { '_endpoint': 'gcash/quote', 'amount': this.amount(), 'msisdn': this.mobileNo(), }; $.ajax({ url: "/restadapter", type: "GET", data: $.param(ko.toJS(parameters)), processData: false, contentType: "application/json", dataType: "json", success: function(result) { token(result.data.token); charges(result.data.deductions); total_payment( ( ( parseFloat(result.data.deductions.principal)+ parseFloat(result.data.deductions.system_percentage)+ (result.data.category == "MT" ? 0 : ( (result.data.deductions.hasOwnProperty("distribution") ? parseFloat(result.data.deductions.distribution) : 0 )+ (result.data.deductions.hasOwnProperty("distribution_1") ? parseFloat(result.data.deductions.distribution_1) : 0 )+ (result.data.deductions.hasOwnProperty("distribution_2") ? parseFloat(result.data.deductions.distribution_2) : 0 ) )) ) + (result.data.category == "MT" ? 0 : parseFloat(result.data.deductions.amount_percentage)) ).toFixed(2)); convenience_fee( result.data.category == "MT" ? 0 : ((parseFloat(total_payment())) - (parseFloat(result.data.deductions.principal))).toFixed(2) ); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardNext'); }, error: function(result) { var error = ko.utils.parseJson(result.responseText); var text = ""; if (typeof error.message == 'object') { $.each(error.message, function(index, val) { text += index + ": " + val + "
"; }); } else { text = error.message; } text += ""; toastr.error(text); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardNext'); } }); }; send = function(data, event) { $(event.currentTarget).attr("disabled", "disabled"); $(event.currentTarget).html('Processing') var parameters = { '_endpoint': 'gcash/fund', '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((selectedUser().moneyWallet() - parseFloat(charges().total_deduction)).toFixed(2)); amplify.store("__client", ko.toJS(selectedUser())); $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardSubmit'); token(''); resetText('Done'); $(next_button).hide() $(send_button).hide() }, error: function(result) { $(event.currentTarget).attr("disabled", false); $(event.currentTarget).html('forwardSubmit'); var error = ko.utils.parseJson(result.responseText); var text = ""; if (typeof error.message == 'object') { $.each(error.message, function(index, val) { text += index + ": " + val + "
"; }); } else { text = error.message; } text += ""; toastr.error(text); } }); }; reset = function() { mobileNo(''); charges(new charges()); token("reset"); token(""); amount(""); password(""); resetText("reset"); }; })(); 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.bindingHandlers.amountNumber = { init: function(element, valueAccessor) { $(element).on("keydown change paste", function(event) { var value = typeof event.key != 'undefined' && event.key.length == 1 ? element.value + event.key : ""; var regex = new RegExp('^\\$?[0-9]?((\\.[0-9]{1,2})|([0-9]+(\\.[0-9]{1,2})?))$'); if (value == '' && event.keyCode != '8') event.preventDefault(); if (value != undefined && value.trim() != '' && !regex.test(value) && event.keyCode != '8' || event.keyCode == '32' ) { element.value = value != '.-' && (event.key == '.') && (value.split(".").length < 3) ? value : value.slice(0, -1); event.preventDefault(); } }); } }; ko.applyBindings(viewModel);