File: //home/arjun/projects/buyercall_new/buyercall/buyercall/assets/components/lead-call.js
/* jshint esversion: 6 */
var Backbone = require('backbone');
var _ = require('underscore');
var utils = require('./utils');
var LeadCallView = Backbone.View.extend({
events: {
'click .btn-call': 'handleCallClick'
},
initialize: function (options) {
this.callId = parseInt(options.callId);
this.leadCall = options.leadCall;
if (options.leadCall) {
this.callUrl = '/contacts/call/' + this.callId;
} else {
this.callUrl = '/api/leads/call/' + this.callId;
}
},
render: function() {
this.$el.html(
$('#lead-call-popup').html()
).appendTo(document.body);
var defaultAgent = "-1";
var defaultRouting = "-1";
$.ajax(this.callUrl, {
method: 'GET'
}).done((data) => {
if (!data) {
console.error('Failed to retrieve lead call info.');
return;
} else {
if (data.agentNumber != undefined && data.agentNumber != null && data.agentNumber != "") {
defaultAgent = data.agentNumber;
}
if (data.routingNumber != undefined && data.routingNumber != null && data.routingNumber != "") {
defaultRouting = data.routingNumber;
}
}
// Populate the drop-down boxes
this.$('.agent-number').html(
'<option value="-1">Select number...</option>' +
data.allAgentNumbers.map(function (num) {
return `<option value="${num.number}">${num.agent}</option>`;
}).join('')
).val(defaultAgent);
this.$('.routing-number').html(
'<option value="-1">Select number...</option>' +
data.allRoutingNumbers.map(function (num) {
return `<option value="${num.number}">${num.friendlyName}</option>`;
}).join('')
).val(defaultRouting);
this.$('.btn-call').removeAttr('disabled');
});
return this;
},
getAgentNumber: function() {
return this.$('.agent-number').val();
},
getRoutingNumber: function() {
return this.$('.routing-number').val();
},
validate: function () {
return (this.getAgentNumber() && this.getRoutingNumber());
},
handleCallClick: function (e) {
e.preventDefault();
this.$('.btn-call').prop('disabled');
if (!this.validate()) {
this.$('#lead-call-warning').removeClass('hidden');
this.$('.btn-call').removeAttr('disabled');
return;
}
var data = {
agentNumber: this.getAgentNumber(),
routingNumber: this.getRoutingNumber()
};
$.ajax(this.callUrl, {
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
}).done(() => {
this.$('.modal').modal('toggle');
this.remove();
$(".modal-backdrop").remove();
utils.flash('The call has been initiated successfully', 'success');
});
}
});
module.exports = LeadCallView;