///<reference path="../typings/lite/app_references.d.ts" />
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
//GULP_ABSTRACT_END
define(['jquery', 'validator'], function ($, validator) {
//BB.SERVICES['UPGRADE_VIEW'] = 'UpgradeView'
/**
Upgrade to Enterprise view
@class UpgradeView
@constructor
@return {Object} instantiated UpgradeView
**/
var UpgradeView = (function (_super) {
__extends(UpgradeView, _super);
function UpgradeView(options) {
this.m_options = options;
_super.call(this);
}
UpgradeView.prototype.initialize = function () {
var self = this;
this.id = self.m_options.el;
this.$el = $(this.id);
this.el = this.$el.get(0);
//BB.comBroker.setService(BB.SERVICES['UPGRADE_VIEW'], self);
$(Elements.CLASS_START_UPGRADE).on('click', function (e) {
self.validateAndUpgrade();
e.stopImmediatePropagation();
return false;
});
};
UpgradeView.prototype.detectCardType = function (number) {
var re = {
electron: /^(4026|417500|4405|4508|4844|4913|4917)\d+$/,
maestro: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\d+$/,
dankort: /^(5019)\d+$/,
interpayment: /^(636)\d+$/,
unionpay: /^(62|88)\d+$/,
visa: /^4[0-9]{12}(?:[0-9]{3})?$/,
mastercard: /^5[1-5][0-9]{14}$/,
amex: /^3[47][0-9]{13}$/,
diners: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
discover: /^6(?:011|5[0-9]{2})[0-9]{12}$/,
jcb: /^(?:2131|1800|35\d{3})\d{11}$/
};
if (re.electron.test(number)) {
return 'ELECTRON';
}
else if (re.maestro.test(number)) {
return 'MAESTRO';
}
else if (re.dankort.test(number)) {
return 'DANKORT';
}
else if (re.interpayment.test(number)) {
return 'INTERPAYMENT';
}
else if (re.unionpay.test(number)) {
return 'UNIONPAY';
}
else if (re.visa.test(number)) {
return 'VISA';
}
else if (re.mastercard.test(number)) {
return 'MASTERCARD';
}
else if (re.amex.test(number)) {
return 'AMEX';
}
else if (re.diners.test(number)) {
return 'DINERS';
}
else if (re.discover.test(number)) {
return 'DISCOVER';
}
else if (re.jcb.test(number)) {
return 'JCB';
}
else {
return undefined;
}
};
UpgradeView.prototype.showMessage = function (i_title, i_msg, i_status) {
bootbox.hideAll();
bootbox.dialog({
closeButton: true,
title: i_title,
message: "<br/><br/><br/>\n <center>\n " + (i_status == true ? '<i style="color: green; font-size: 4em; padding:30px" class="fa fa-thumbs-up"></i>'
: '<i style="color: red; font-size: 4em; padding: 30px" class="fa fa-thumbs-down"></i>') + "\n <h4>" + i_msg + "</h4>\n </center>\n <br/><br/><br/>\n "
});
};
UpgradeView.prototype.validateAndUpgrade = function () {
var self = this;
var errors = [];
var resellerName = $(Elements.UPG_USERNAME).val();
var resellerPass = $(Elements.UPG_PASS).val();
var resellerPass2 = $(Elements.UPG_PASS2).val();
var userName = BB.Pepper.getUserData().userName;
var userPass = BB.Pepper.getUserData().userPass;
var credit = $(Elements.UPG_CREDIT).val();
var card = self.detectCardType(credit);
var cv = $(Elements.UPG_CV).val();
var year = $(Elements.UPG_YEAR).val().length == 2 ? '20' + $(Elements.UPG_YEAR).val() : $(Elements.UPG_YEAR).val();
var month = $(Elements.UPG_MONTH).val().replace(/^0+/, '');
switch (card) {
case 'VISA':
{
card = '0';
break;
}
case 'MASTERCARD':
{
card = '1';
break;
}
case 'DISCOVER':
{
card = '2';
break;
}
case 'AMEX':
{
card = '3';
break;
}
default:
{
card = '-1';
}
}
if (resellerName.length < 4)
errors.push('Enterprise user name is invalid');
if (card == '-1')
errors.push('Credit card type not supported');
if (!validator.isCreditCard(credit))
errors.push('Credit card number is invalid');
if (!validator.isInt(cv))
errors.push('Credit card security code is invalid');
if (!validator.isInt(year))
errors.push('Credit card year is invalid');
if (!validator.isInt(month))
errors.push('credit card month is invalid, must be a number like 1 for Jan');
if (resellerPass.length < 4 || resellerPass != resellerPass2)
errors.push('Password is invalid');
if (errors.length > 0) {
bootbox.alert(errors.join('<br/>'));
}
else {
bootbox.dialog({
closeButton: false,
title: "Please wait, validating...",
message: "<br/><br/><br/>\n <center>\n <img src=\"./_assets/preload6.gif\"></span>\n </center>\n <br/><br/><br/>\n "
});
var url = "https://galaxy.signage.me/WebService/UpgradeToResellerAccount.ashx?userName=" + userName + "&userPassword=" + userPass + "&resellerUserName=" + resellerName + "&resellerPassword=" + resellerPass + "&cardType=" + card + "&cardNumber=" + credit + "&expirationMonth=" + month + "&expirationYear=" + year + "&securityCode=" + cv + "&callback=?";
$.getJSON(url, function (e) {
var msg = '';
console.log('Credit card status ' + e.result);
switch (e.result) {
case -4:
{
msg = 'This user is already under a subscription account';
self.showMessage(e.status, msg, false);
return;
}
case -5:
{
msg = 'Enterprise use name is taken, please pick a different name';
self.showMessage(e.status, msg, false);
return;
}
case -3:
{
}
case -2:
{
}
case -1:
{
msg = 'Problem with credit card, please use a different card';
self.showMessage(e.status, msg, false);
return;
}
default:
{
if (e.result > 100) {
bootbox.hideAll();
$('.modal').modal('hide');
//var snippet = `Congratulations, be sure to checkout the <a href="http://www.digitalsignage.com/_html/video_tutorials.html?videoNumber=liteUpgrade" target="_blank">video tutorial</a> on how to install your newly available components from the mediaSTORE`;
var snippet = "Congratulations, be sure to go to the mediaSTORE and install your newly available components...";
self.showMessage('success', snippet, true);
return;
}
else {
msg = 'Problem with credit card, please use a different card';
self.showMessage(e.status, msg, false);
}
}
}
})
.done(function (e) {
})
.fail(function (e) {
self.showMessage(e.status, 'Could not complete, something went wrong on server side', false);
})
.always(function () {
});
}
};
return UpgradeView;
}(Backbone.View));
return UpgradeView;
});