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