/**
Application router for FQ terminal applications
well as management for sizing events
@class FQTerminalController
@constructor
@return {Object} instantiated AppRouter
**/
define(['underscore', 'jquery', 'backbone', 'XDate', 'StackView', 'FQCustomerTerminal', 'FQRemoteStatus', 'LineModel'], function (_, $, Backbone, XDate, StackView, FQCustomerTerminal, FQRemoteStatus, LineModel) {
BB.SERVICES.FQ_TERMINAL_ROUTER = 'FQ_TERMINAL_ROUTER';
BB.SERVICES.FQ_LINE_MODEL = 'FQ_LINE_MODEL';
var FQTerminalController = BB.Controller.extend({
/**
Constructor
@method initialize
**/
initialize: function () {
var self = this;
BB.comBroker.setService(BB.SERVICES.FQ_TERMINAL_ROUTER, self);
BB.comBroker.setService('XDATE', new XDate());
$(window).trigger('resize');
self._initTerminal(self.options.app);
},
/**
Init user terminal view
@method _initUserTerminal
**/
_initTerminal: function (i_app) {
var self = this;
var data = $.base64.decode(self.options.param);
data = JSON.parse(data);
self.m_lineModel = new LineModel({
call_type: data.call_type,
business_id: data.business_id,
line_id: data.line_id,
email: data.email,
service_id: data.service_id,
verification: data.verification,
date: data.date,
line_name: data.line_name
});
BB.comBroker.setService(BB.SERVICES.FQ_LINE_MODEL, self.m_lineModel);
switch (i_app){
case BB.CONSTS.APP_CUSTOMER_TERMINAL: {
self._loadCustomerTerminalApp();
break;
}
case BB.CONSTS.APP_REMOTE_STATUS: {
self._getLine();
break;
}
}
},
/**
Fetch Line model from server and instantiate Remote Status view on success
@method _loadRemoteStatus server:getLine
**/
_getLine: function () {
var self = this;
// fetch with extra parameters
self.m_lineModel.fetch({
data: {
business_id: self.m_lineModel.get('business_id')
},
success: (function (model, data) {
self.m_fqRemoteStatusView = new FQRemoteStatus({
el: Elements.FQ_REMOTE_STATUS,
model: self.m_lineModel
});
self.m_stackView = new StackView.Fader({duration: 333});
self.m_stackView.addView(self.m_fqRemoteStatusView);
self.m_stackView.selectView(self.m_fqRemoteStatusView);
}),
error: (function (e) {
log('Service request failure: ' + e);
}),
complete: (function (e) {
})
});
},
/**
Fetch Line model from server and instantiate Terminal view on success
@method _loadCustomerTerminalApp server:getLine
**/
_loadCustomerTerminalApp: function () {
var self = this;
// fetch with extra parameters
self.m_lineModel.fetch({
data: {
business_id: self.m_lineModel.get('business_id')
},
success: (function (model, data) {
self.m_fasterQCustomerTerminalView = new FQCustomerTerminal({
el: Elements.FQ_CUSTOMER_TERMINAL,
model: self.m_lineModel
});
self.m_stackView = new StackView.Fader({duration: 333});
self.m_stackView.addView(self.m_fasterQCustomerTerminalView);
self.m_stackView.selectView(self.m_fasterQCustomerTerminalView);
}),
error: (function (e) {
log('Service request failure: ' + e);
}),
complete: (function (e) {
})
});
}
});
return FQTerminalController;
});