File: //home/arjun/projects/buyercall/buyercall/assets/components/contacts/contacts_dashboard.js
var utils = require('../utils');
var moment = require('moment');
var LeadCallView = require('../lead-call');
var LeadSmsView = require('../lead-sms');
const CONTACTS_CSV_URL = `//${appConfig.server_url}/contacts/csv`;
const CONTACTS_DETAILS = `//${appConfig.server_url}/contacts/filteroptions`;
var contacts = {
tableApi: null,
fromDate: null,
ogFromDate: null,
toDate: null,
ogToDate: null,
frPhonenumberObject: null,
nwPhonenumberObject: null,
frFormObject: null,
nwFormObject: null,
frCallStatusObject: null,
nwCallStatusObject: null,
frCallBdcStatusObject: null,
nwCallBdcStatusObject: null,
frMarketingSourceObject: null,
nwMarketingSourceObject: null,
frMessageObject: null,
nwMessageObject: null,
frAssignedAgentObject: null,
nwAssignedAgentObject: null,
frApiCheckObject: { id: 0 },
nwApiCheckObject: null,
frAdfImportCheckObject: { id: 0 },
nwAdfImportCheckObject: null,
frImportCheckObject: { id: 0 },
nwImportCheckObject: null,
frFormCheckObject: { id: 0 },
nwFormCheckObject: null,
frSmsCheckObject: { id: 0 },
nwSmsCheckObject: null,
frPhoneCheckObject: { id: 0 },
nwPhoneCheckObject: null,
searchUrl: "",
gloFiles: null,
gloErrorFile: null,
gloRequest: null,
gloDownloadErrors: null,
gloRefreshTable: false,
gloShowAutomotiveItems: false,
gloShowSuperAutomotiveItems: false,
gloIsPartnerRole: false,
gloDateRegEx: /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/,
gloPhonenumberRegEx: /^\+?[0-9]{10,12}$/,
gloEmailRegEx: /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/,
gloCurrentDate: null,
editLeadId: -1,
btnReset: false,
gloDefaultCampaigns: true,
gloSelectedCampaign: -1,
gloCampaignCount: 0,
gloddModeAdding: false,
gloddModeEditing: false,
init: function() {
var loThat = this;
if ($('#businessType').val() == 'automotive') {
loThat.gloShowAutomotiveItems = true;
}
if ($('#superUserType').length == 1) {
const roles = ['partner', 'limitsysadmin']
if (roles.includes($('#superUserType').val())) {
loThat.gloIsPartnerRole = true
}
if ($('#superBusinessType').val() == 'automotive') {
loThat.gloShowSuperAutomotiveItems = true;
}
}
var origin = window.location.origin;
//Define start and end date
this.ogFromDate = moment().utc().subtract(1, "month");
this.ogToDate = moment().utc();
this.fromDate = this.ogFromDate;
this.toDate = this.ogToDate;
//Define and format global current date
loThat.gloCurrentDate = moment().utc();
//loThat.gloCurrentDate = loThat.gloCurrentDate.format("MMDDYYYY");
//Load content and events
loThat.loadTable(loThat.setTableUrl());
loThat.loadDropDownFilterOptions();
loThat.loadDatePickers();
loThat.getContactAgents();
loThat.setEvents();
loThat.setTableUrl();
loThat.loadStyles();
$('#mySms').modal('hide');
//Set CSV download link
$("#btnDownloadExampleCsv").attr("href", origin + "/contacts/import/leads/example")
},
getFilter: function(paFilter) {
var loThat = this,
evalObject = null;
if (paFilter === "form_check") {
evalObject = loThat.frFormCheckObject;
} else
if (paFilter === "sms_check") {
evalObject = loThat.frSmsCheckObject;
} else
if (paFilter === "phone_check") {
evalObject = loThat.frPhoneCheckObject;
} else
if (paFilter === "api_check") {
evalObject = loThat.frApiCheckObject;
} else
if (paFilter === "adf_import_check") {
evalObject = loThat.frAdfImportCheckObject;
} else
if (paFilter === "import_check") {
evalObject = loThat.frImportCheckObject;
} else
if (paFilter === "assigned_agent") {
evalObject = loThat.frAssignedAgentObject;
} else
if (paFilter === "form_source") {
evalObject = loThat.frFormObject;
} else
if (paFilter === "call_status") {
evalObject = loThat.frCallStatusObject;
} else
if (paFilter === "call_bdc_status") {
evalObject = loThat.frCallBdcStatusObject;
} else
if (paFilter === "phone_source") {
evalObject = loThat.frPhonenumberObject;
} else
if (paFilter === "message_source") {
evalObject = loThat.frMessageObject;
} else
if (paFilter === "marketing_source") {
evalObject = loThat.frMarketingSourceObject;
}
if (evalObject === null || evalObject === undefined || evalObject.id === undefined) {
return "null";
}
else {
return evalObject.id;
}
},
getFromDateFilter: function() {
var loThat = this;
return loThat.fromDate.utc().format("MMDDYYYY");
},
getToDateFilter: function() {
var loThat = this;
return loThat.toDate.utc().format("MMDDYYYY");
},
loadTable: function(paLeadUrl) {
spinnerAdded();
var loThat = this;
var loImportLeads = $('#leadImports').val();
var loDom = "<'row'<'col-sm-3 col-md-3 col-lg-2'B><'col-sm-2 col-lg-2'l><'col-xs-12 col-sm-7 col-md-7 col-lg-8 datatables-padding text-right'f>>" +
"<'row'<'col-sm-12't>>" +
"<'row'<'col-sm-5'i><'col-sm-7'rp>>";
var loButtons = [];
if (!loThat.gloShowSuperAutomotiveItems || !loThat.gloIsPartnerRole) {
loButtons = [{
text: "Download csv",
className: "btn-primary btn btn-csv-dl",
action: function (e, dt, node, config) {
var searchOptions = {
search: dt.ajax.params().search,
aa: loThat.getFilter("assigned_agent"),
df: loThat.getFromDateFilter(),
dt: loThat.getToDateFilter(),
stf: loThat.getFilter("form_check"),
sts: loThat.getFilter("sms_check"),
sas: loThat.getFilter("api_check"),
sais: loThat.getFilter("adf_import_check"),
sis: loThat.getFilter("import_check"),
stp: loThat.getFilter("phone_check"),
fs: loThat.getFilter("form_source"),
ps: loThat.getFilter("phone_source"),
ms: loThat.getFilter("message_source"),
cs: loThat.getFilter("call_status"),
cbs: loThat.getFilter("call_bdc_status"),
mks: loThat.getFilter("marketing_source")
},
queryString = $.param(searchOptions),
url = `${CONTACTS_CSV_URL}?${queryString}`;
window.open(url);
}
}];
} else {
loButtons = [{
text: "Restricted",
className: "btn-primary btn disabled"
}]
}
if (loImportLeads != undefined && loImportLeads != '' && loImportLeads.toLowerCase() == 'true') {
loDom = "<'row'<'col-sm-5 col-md-5 col-lg-5'B><'col-sm-1 col-lg-1'l><'col-xs-12 col-sm-6 col-md-6 col-lg-6 datatables-padding text-right'f>>" +
"<'row'<'col-sm-12't>>" +
"<'row'<'col-sm-5'i><'col-sm-7'rp>>";
loButtons.push({
text: "Add Lead",
className: "btn-primary btn btn-add-lead",
action: function() {
$("#addLeadModal").modal();
}
},{
text: "Import Leads",
className: "btn-primary btn btn-csv-imp",
action: function() {
$("#importLeadsModal").modal();
}
});
}
App.datatables();
loThat.tableApi = $("#leads-datatable").DataTable({
fnDrawCallback: function( oSettings ) {
$(".btn-lead-call").off().on("click", function(e) {
var id = this.getAttribute("data-lead-id");
new LeadCallView({
leadCall: true,
callId: id
}).render();
e.preventDefault();
});
$(".btn-lead-sms").off().on("click", function(e) {
var leadId = this.getAttribute("data-sms-id");
$("#smsModalData").val(leadId);
e.preventDefault();
$("#mySms").modal();
});
$(".btn-new-app").off().on("click", function(e) {
var leadId = this.getAttribute("data-new-app-id");
$("#newAppData").val(leadId);
e.preventDefault();
$("#newApplicationModal").modal();
});
$(".btn-lead-quick-edit").off().on("click", function(e) {
loThat.editLeadId = this.getAttribute("data-edit-id");
e.preventDefault();
$("#myLeadEditModal").modal();
});
spinnerRemoved();
},
buttons: loButtons,
dom: loDom,
columns: [
{
data: null,
render: function (data, type, row, meta) {
return loThat.tableApi.page.info().start + meta.row + 1;
},
searchable: false,
orderable: false
}, // No
{
data: 1,
render: function (data, type, row) {
if (row[1].length && row[10].length) {
return row[1] + ' ' + row[10];
} else if (row[1].length && !row[10].length) {
return row[1]
} else {
return ''
}
}
}, // Name
{
data: 2,
render: utils.formatNumber
}, // Phone Number,
{
data: 3
}, // Email,
{
data: 4,
className: "text-center text-capitalize",
render: function (source) {
var source_types = [],
result = "";
if (source != undefined && source != null && source != '') {
source_types = source.split("-");
if (source_types != undefined && source_types != null) {
for(var i = 0; i < source_types.length; i++) {
if (source_types.length > 3 && (i == 0 || i == 3)) {
if (i != 3) {
result += '<div>';
} else {
result += '<div style="padding-top:8px;">';
}
}
if (source_types[i] == "api") {
result += '<span class="label label-danger source-padding" title="API source">'+ source_types[i] +'</span>';
} else
if (source_types[i] == "adf") {
result += '<span class="label label-adf source-padding" title="ADF source">'+ source_types[i] +'</span>';
} else
if (source_types[i] == "import") {
result += '<span class="label label-info source-padding" title="Import source">'+ source_types[i] +'</span>';
} else
if (source_types[i] == "sms") {
result += '<span class="label label-warning source-padding" title="SMS source">'+ source_types[i] +'</span>';
} else
if (source_types[i] == "phone") {
result += '<span class="label label-primary source-padding" title="Phone source">'+ source_types[i] +'</span>';
} else
if (source_types[i] == "form") {
result += '<span class="label label-success source-padding" title="Form source">'+ source_types[i] +'</span>';
}
if (source_types[i] == "mobile") {
result += '<span class="label label-rose source-padding" title="Mobile source">'+ source_types[i] +'</span>';
}
if (source_types[i] == "credit") {
result += '<span class="label label-credit source-padding" title="Credit source">'+ source_types[i] +'</span>';
}
if (source_types.length > 3 && (i == 2 || i == (source_types.length - 1))) {
result += '</div>';
}
}
}
}
return result;
}
}, // Source Type
{
data: 5,
searchable: false,
render: function (date) {
//return `<time datetime='${date}'>${moment(new Date(date)).fromNow()}</time>`;
return `<time datetime='${date}'>${moment(new Date(date)).tz("America/New_York").format('lll')}</time>`;
}
}, // Created Date
{
data: 6,
searchable: false,
render: function (date) {
return `<time datetime='${date}'>${moment(new Date(date)).tz("America/New_York").format('lll')}</time>`;
}
}, // Updated Date
{
data: 7,
className: "text-center text-capitalize"
}, // Status
{
data: 8/*
searchable: true,
orderable: true,*/
/*render: function (data, type, row, meta) {
return `<a href="/agents/edit/${row[11]}">${row[10]}</a>`;
}*/
}, // Agents
{
visible: loThat.gloShowAutomotiveItems,
data: 9,
render: function (data, type, row, meta) {
return `<a href="/contacts/edit/${row[0]}#credit">${row[9]}</a>`;
}
}, // Credit Score
{
data: "0",
searchable: false,
orderable: false,
className: "text-center",
render: function (id, type, row) {
var loCreditScoreItem = '';
var loNewApplicationItem = '';
if (loThat.gloShowAutomotiveItems == true) {
loCreditScoreItem = '<li><a href="/contacts/edit/' + id + '#credit"> Credit Score <span class="label label-small label-success source-padding">NEW</span></a></li>';
loNewApplicationItem = '<li><a href="" class="btn-new-app" data-new-app-id="' + id +'"> New Application</a></li>';
}
if (loThat.gloIsPartnerRole && loThat.gloShowSuperAutomotiveItems) {
return '<a href="#" class="btn btn-secondary" aria-expanded="true" disabled> Restricted </a>';
} else {
return '<div class="dropdown">' +
'<a href="#" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="true" > Actions ' +
'<b class="caret"></b>' +
'</a>' +
'<ul class="contact-action-menu dropdown-menu">' +
'<li><a class="btn-lead-quick-edit btn-table-action" data-edit-id="' + id +'"> Quick Edit</a></li>' +
'<li><a href="/contacts/edit/' + id +'"> Advance Edit</a></li>' +
'<li><a href="/contacts/pdf/' + id +'" target="_blank"> Download PDF</a></li>' +
loCreditScoreItem +
// '<li class="divider"></li>' +
'<li><a href="" class="btn-lead-call" data-lead-id="' + id +'" data-toggle="modal" data-target="#myModal"> Call</a></li>' +
'<li><a href="" class="btn-lead-sms" data-sms-id="' + id +'">SMS</a></li>' +
loNewApplicationItem +
'</ul>' +
'</div>';
}
}
}
],
initComplete: function( settings, json ) {
var input = $('.dataTables_filter input').unbind(),
self = this.api(),
$searchButton = $('<a>')
.text('search')
.click(function() {
self.search(input.val()).draw();
spinnerAdded();
}),
$clearButton = $('<a>')
.text('clear')
.click(function() {
input.val('');
$searchButton.click();
})
$(document).keypress(function (event) {
if (event.which == 13) {
$searchButton.click();
}
});
if (!$(".tbl-search-btn").length) {
$('.dataTables_filter').append($searchButton, $clearButton);
$("#leads-datatable_filter a").addClass("btn btn-primary btn-default tbl-search-btn");
$("#leads-datatable_filter span i").remove();
}
if (loThat.objectEmpty(json.data)) {
$(".feedback-section").hide();
$("#leadLineChart").html("");
} else {
$(".feedback-section").show();
}
},
order: [[ 5, "desc" ]],
language: {
"lengthMenu": 'Display <select class="form-control dataTables-records-length-select">'+
'<option value="30"> 30</option>'+
'<option value="40"> 40</option>'+
'<option value="50"> 50</option>'+
'<option value="100"> 100</option>'+
'</select> records'
},
pageLength: 50,
processing: false,
serverSide: true,
ajax: paLeadUrl
});
loThat.loadStyles();
loThat.tableApi.on("xhr", function(e, settings, json) {
if (json !== undefined && json !== null) {
loThat.loadSideBarTexts(
json.totalLeads,
json.totalPhone,
json.totalUniquePhone,
json.totalMessages,
json.totalUniqueMessages,
json.totalFormLeads,
json.totalUniqueFormLeads
);
loThat.refreshGraph(json.graphLeadPoints, json.graphFormPoints, json.graphPhonePoints, json.graphMessagePoints, json.graphLabels);
}
});
if (! $.fn.DataTable.isDataTable( "#leads-datatable" )) {
spinnerRemoved();
};
},
loadDropDownFilterOptions: function() {
var loThat = this;
$.ajax({
url: `${CONTACTS_DETAILS}`,
type: "GET",
dataType: "json",
success: function(response) {
loThat.populateDropDowns("cbAssignedAgent", response.assigned_agent_data, "assigned_agent");
loThat.populateDropDowns("cbMarketingSource", response.marketing_data, "marketing_data");
loThat.populateDropDowns("cbFormLeadSource", response.form_source_data, "form_source");
loThat.populateDropDowns("cbSmsLeadSource", response.message_source_data, "message_source");
loThat.populateDropDowns("cbPhoneLeadSource", response.phone_source_data, "phone_source");
loThat.populateDropDowns("cbStatus", response.status_data, "call_status");
loThat.populateDropDowns("cbBdcStatus", response.bdc_status_data, "call_bdc_status");
}
});
},
loadDatePickers: function() {
var loThat = this;
$("#date-from").datetimepicker({
format: "MM/DD/YYYY",
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: "fa fa-chevron-left",
next: "fa fa-chevron-right",
today: "fa fa-screenshot",
clear: "fa fa-trash",
close: "fa fa-remove",
inline: true
},
defaultDate: loThat.fromDate
});
$("#date-to").datetimepicker({
format: "MM/DD/YYYY",
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: "fa fa-chevron-left",
next: "fa fa-chevron-right",
today: "fa fa-screenshot",
clear: "fa fa-trash",
close: "fa fa-remove",
inline: true
},
defaultDate: loThat.toDate
});
$("#addBirthday").datetimepicker({
format: "MM/DD/YYYY",
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: "fa fa-chevron-left",
next: "fa fa-chevron-right",
today: "fa fa-screenshot",
clear: "fa fa-trash",
close: "fa fa-remove",
inline: true
},
keepInvalid: true
});
},
showAlert: function(message, alert, addLink) {
var loThat = this;
if (addLink) {
$("#alertImportWrapper").html('<div id="alert" class="alert alert-' + alert + '" role="alert" style="margin-bottom:0px !important;"><span>' + message + ' <a id="btnDownloadCsv">Download Errors</a></span></div>');
$("#btnDownloadCsv").off().on("click", function() {
if (loThat.gloDownloadErrors != null && loThat.gloDownloadErrors != undefined && loThat.gloDownloadErrors != "") {
var link = document.createElement("a");
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth() + 1;
var day = d.getDate();
var exportedFilename = "";
if (month < 10) {
month = "0" + month;
}
exportedFilename = 'Buyercall Leads - Import Errors - '+ year + '-' + month + '-'+ day +'.csv';
if (link.download !== undefined) { // feature detection
link.setAttribute("id", "hiddenDownloadLink");
link.setAttribute("download", exportedFilename);
link.style.visibility = 'hidden';
link.href = 'data:text/csv;charset=utf-8,' + encodeURI(loThat.gloDownloadErrors);
link.target = '_blank';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
});
} else {
$("#alertImportWrapper").html('<div id="alert" class="alert alert-' + alert + '" role="alert" style="margin-bottom:0px !important;"><span>' + message + '</span></div>');
}
},
reset: function() {
var loThat = this;
var fileInputLabel = $("#fileInputLabel");
var fileInput = $("#fileInput");
var uploadBtn = $("#uploadBtn");
var cancelBtn = $("#cancelBtn");
var downloadTemplate = $("#btnDownloadExampleCsv");
var progressWrapper = $("#progressWrapper");
var inputImportSection = $("#inputImportSection");
loThat.gloFiles = null;
// Show the input box
inputImportSection.show();
// Clear the input
fileInput.val('');
// Hide the cancel button
cancelBtn.hide();
downloadTemplate.show();
// Reset the input element
fileInput.removeAttr('disabled');
// Show the upload button
uploadBtn.show();
// Hide the progress bar
progressWrapper.hide();
// Reset the input placeholder
fileInputLabel.text("Select a file...");
},
setEvents: function() {
var loThat = this;
var loCurrentDate = moment().utc();
$("#fileInput").on("input", function(ev) {
var fileInputLabel = $("#fileInputLabel");
loThat.gloFiles = this.files;
fileInputLabel.text(loThat.gloFiles[0].name);
$("#alertImportWrapper").html('');
loThat.gloDownloadErrors = null;
});
$("#addLeadModal").on('hide.bs.modal', function(){
$("#addFirstName, #addLastName, #addEmail, #addPhonenumber, #addNote, #addAddress1, #addAddress2, #addCity, #addState, #addZip, #addCountry, #addBirthday").val("");
$('#addStatus option:first-child').attr("selected", "selected");
$('#addMarketingSource option:first-child').attr("selected", "selected");
$('#addAgent option:first-child').attr("selected", "selected");
$("#chkAddDoNotCallPhone, #chkAddIsUnsubscribed").removeAttr('checked');
$('#addLeadModal .field-error').remove();
$('#add-contact-warning').hide();
$('#addLeadModal .form-group').removeClass('has-error');
});
$('#btnAddSave').on('click', function() {
loThat.addContactDetails();
});
$('#btnAddNewAppCreate').on('click', function() {
var formId = $("#contactForm").val();
if (formId != "Select form...") {
var contactId = $("#newAppData").val();
window.location.replace("/form_leads/add/" + contactId + "/" + formId);
}
});
$("#importLeadsModal").on('hide.bs.modal', function(){
loThat.reset();
$("#alertImportWrapper").html('');
$("#btnDownloadCsv").hide();
if (loThat.gloRefreshTable) {
loThat.reloadTable();
loThat.gloRefreshTable = false;
}
});
$("#uploadBtn").on("click", function(ev) {
var fileInputLabel = $("#fileInputLabel");
var origin = window.location.origin;
var loUrl = origin + "/contacts/import/leads";
var filename = "";
loThat.gloDownloadErrors = null;
if (loThat.gloFiles != undefined && loThat.gloFiles.length > 0) {
filename = loThat.gloFiles[0].name;
}
if (filename != undefined && filename != "" && filename != "Select file...") {
var data = new FormData();
var uploadBtn = $("#uploadBtn");
var cancelBtn = $("#cancelBtn");
var progressWrapper = $("#progressWrapper");
var fileInput = $("#fileInput");
var inputImportSection = $("#inputImportSection");
var downloadTemplate = $("#btnDownloadExampleCsv");
loThat.gloRequest = new XMLHttpRequest();
loThat.gloRequest.responseType = "json";
$("alertImportWrapper").html("");
// Disable the input during upload
fileInput.attr('disabled', 'disabled');
// Hide the input box
inputImportSection.hide();
// Hide the upload button
uploadBtn.hide();
// Show the cancel button
cancelBtn.show();
downloadTemplate.hide();
// Show the progress bar
progressWrapper.show();
// Get a reference to the file
var file = loThat.gloFiles[0];
// Get a reference to the filename
var filename = file.name;
// Get a reference to the filesize & set a cookie
var filesize = file.size;
document.cookie = 'filesize=' + filesize;
// Append the file to the FormData instance
data.append("file", file);
// request load handler (transfer complete)
loThat.gloRequest.addEventListener("load", function (e) {
var serviceResponse = loThat.gloRequest.response;
if (loThat.gloRequest.status == 200) {
var showErrorLink = false;
if (serviceResponse.csv_download != undefined && serviceResponse.csv_download == true && serviceResponse.csv_error_list != "") {
loThat.gloDownloadErrors = serviceResponse.csv_error_list;
showErrorLink = true;
} else {
loThat.gloDownloadErrors = null;
}
if (serviceResponse.success == true) {
loThat.showAlert(serviceResponse.message, "success", showErrorLink);
} else {
loThat.showAlert(serviceResponse.message, "warning", showErrorLink);
}
loThat.gloRefreshTable = true;
} else {
if (serviceResponse.message.length > 0) {
loThat.showAlert(serviceResponse.message, "danger", false);
} else {
loThat.showAlert('Error uploading file.', "danger", false);
fileInput.removeAttr('disabled');
}
}
loThat.reset();
});
// request error handler
loThat.gloRequest.addEventListener("error", function (e) {
loThat.reset();
loThat.showAlert('Error uploading file.', "warning");
});
// request abort handler
loThat.gloRequest.addEventListener("abort", function (e) {
loThat.reset();
loThat.showAlert('Upload cancelled.', "warning");
});
// Open and send the request
loThat.gloRequest.open("post", loUrl);
loThat.gloRequest.send(data);
} else {
loThat.showAlert("Error uploading file, no file selected.", "warning");
}
});
$("#cancelBtn").on('click', function(ev) {
loThat.gloRequest.abort();
});
$("#date-from").on("dp.change", function(ev) {
if (ev.date !== null && ev.date !== undefined) {
loThat.fromDate = ev.date;
if (loThat.btnReset === false) {
loThat.tableApi.destroy();
loThat.loadTable(loThat.setTableUrl());
}
}
});
$("#date-to").on("dp.change", function(ev) {
if (ev.date !== null && ev.date !== undefined) {
loThat.toDate = ev.date;
if (loThat.btnReset === false) {
loThat.tableApi.destroy();
loThat.loadTable(loThat.setTableUrl());
}
}
});
$(".btn-short-today").on("click", function(ev) {
loThat.btnReset = false
$("#date-from").data("DateTimePicker").date(loCurrentDate);
$("#date-to").data("DateTimePicker").date(loCurrentDate);
loThat.btnReset = true
});
$(".btn-short-week").on("click", function(ev) {
loThat.btnReset = false
$("#date-from").data("DateTimePicker").date(moment().subtract(7,"d"));
$("#date-to").data("DateTimePicker").date(loCurrentDate);
loThat.btnReset = true
});
$(".btn-short-month").on("click", function(ev) {
loThat.btnReset = false
$("#date-from").data("DateTimePicker").date(loThat.getFirstDayOfMonth());
$("#date-to").data("DateTimePicker").date(loThat.getLastDayOfMonth());
loThat.btnReset = true
});
$(".btn-short-year").on("click", function(ev) {
loThat.btnReset = false
$("#date-from").data("DateTimePicker").date(loThat.getFirstDayOfYear());
$("#date-to").data("DateTimePicker").date(loThat.getLastDayOfYear());
loThat.btnReset = true
});
$(".btn-additional-filters").on("click", function(ev) {
$("#myLeadFilterModal").modal("show");
});
$("#chkApi").change(function() {
if (this.checked) {
loThat.nwApiCheckObject = {
id: 1
};
loThat.nwAdfImportCheckObject = {
id: 0
};
loThat.nwImportCheckObject = {
id: 0
};
$("#chkImport, #chkAdfImport").prop("checked", false);
} else {
loThat.nwApiCheckObject = {
id: 0
};
}
});
$("#chkAdfImport").change(function() {
if (this.checked) {
loThat.nwAdfImportCheckObject = {
id: 1
};
loThat.nwApiCheckObject = {
id: 0
};
loThat.nwImportCheckObject = {
id: 0
};
$("#chkApi, #chkImport").prop("checked", false);
} else {
loThat.nwAdfImportCheckObject = {
id: 0
};
}
});
$("#chkImport").change(function() {
if (this.checked) {
loThat.nwImportCheckObject = {
id: 1
};
loThat.nwApiCheckObject = {
id: 0
};
loThat.nwAdfImportCheckObject = {
id: 0
};
$("#chkAdfImport, #chkApi").prop("checked", false);
} else {
loThat.nwImportCheckObject = {
id: 0
};
}
});
$("#chkPhone").change(function() {
if (this.checked) {
loThat.nwPhoneCheckObject = {
id: 1
};
} else {
loThat.nwPhoneCheckObject = {
id: 0
};
}
});
$("#chkForm").change(function() {
if (this.checked) {
loThat.nwFormCheckObject = {
id: 1
};
} else {
loThat.nwFormCheckObject = {
id: 0
};
}
});
$("#chkSms").change(function() {
if (this.checked) {
loThat.nwSmsCheckObject = {
id: 1
};
} else {
loThat.nwSmsCheckObject = {
id: 0
};
}
});
$("#btnApply").on("click", function(ev) {
if (loThat.nwPhonenumberObject !== null) {
loThat.frPhonenumberObject = loThat.nwPhonenumberObject;
}
if (loThat.nwFormObject !== null) {
loThat.frFormObject = loThat.nwFormObject;
}
if (loThat.nwMessageObject !== null) {
loThat.frMessageObject = loThat.nwMessageObject;
}
if (loThat.nwCallStatusObject !== null) {
loThat.frCallStatusObject = loThat.nwCallStatusObject;
}
if (loThat.nwCallBdcStatusObject !== null) {
loThat.frCallBdcStatusObject = loThat.nwCallBdcStatusObject;
}
if (loThat.nwMarketingSourceObject !== null) {
loThat.frMarketingSourceObject = loThat.nwMarketingSourceObject;
}
if (loThat.nwAssignedAgentObject !== null) {
loThat.frAssignedAgentObject = loThat.nwAssignedAgentObject;
}
if (loThat.nwSmsCheckObject !== null) {
loThat.frSmsCheckObject = loThat.nwSmsCheckObject;
}
if (loThat.nwSmsCheckObject !== null) {
loThat.frSmsCheckObject = loThat.nwSmsCheckObject;
}
if (loThat.nwPhoneCheckObject !== null) {
loThat.frPhoneCheckObject = loThat.nwPhoneCheckObject;
}
if (loThat.nwFormCheckObject !== null) {
loThat.frFormCheckObject = loThat.nwFormCheckObject;
}
if (loThat.nwApiCheckObject !== null) {
loThat.frApiCheckObject = loThat.nwApiCheckObject;
}
if (loThat.nwAdfImportCheckObject !== null) {
loThat.frAdfImportCheckObject = loThat.nwAdfImportCheckObject;
}
if (loThat.nwImportCheckObject !== null) {
loThat.frImportCheckObject = loThat.nwImportCheckObject;
}
$("#myLeadFilterModal").modal("hide");
//Apply new filters
loThat.reloadTable();
});
$("#btnCancel").on("click", function(ev) {
if (loThat.nwAssignedAgentObject !== undefined && loThat.nwAssignedAgentObject !== null) {
if (loThat.frAssignedAgentObject !== undefined && loThat.frAssignedAgentObject !== null) {
$("#cbAssignedAgent").val(loThat.frAssignedAgentObject.name);
} else {
$("#cbAssignedAgent").val("---");
}
}
if (loThat.nwPhonenumberObject !== undefined && loThat.nwPhonenumberObject !== null) {
if (loThat.frPhonenumberObject !== undefined && loThat.frPhonenumberObject !== null) {
$("#cbPhoneLeadSource").val(loThat.frPhonenumberObject.name);
} else {
$("#cbPhoneLeadSource").val("---");
}
}
if (loThat.nwMessageObject !== undefined && loThat.nwMessageObject !== null) {
if (loThat.frMessageObject !== undefined && loThat.frMessageObject !== null) {
$("#cbSmsLeadSource").val(loThat.frMessageObject.name);
} else {
$("#cbSmsLeadSource").val("---");
}
}
if (loThat.nwFormObject !== undefined && loThat.nwFormObject !== null) {
if (loThat.frFormObject !== undefined && loThat.frFormObject !== null) {
$("#cbFormLeadSource").val(loThat.frFormObject.name);
} else {
$("#cbFormLeadSource").val("---");
}
}
if (loThat.nwCallStatusObject !== undefined && loThat.nwCallStatusObject !== null) {
if (loThat.frCallStatusObject !== undefined && loThat.frCallStatusObject !== null) {
$("#cbStatus").val(loThat.frCallStatusObject.name);
} else {
$("#cbStatus").val("---");
}
}
if (loThat.nwCallBdcStatusObject !== undefined && loThat.nwCallBdcStatusObject !== null) {
if (loThat.frCallBdcStatusObject !== undefined && loThat.frCallBdcStatusObject !== null) {
$("#cbBdcStatus").val(loThat.frCallBdcStatusObject.name);
} else {
$("#cbBdcStatus").val("---");
}
}
if (loThat.nwMarketingSourceObject !== undefined && loThat.nwMarketingSourceObject !== null) {
if (loThat.frMarketingSourceObject !== undefined && loThat.frMarketingSourceObject !== null) {
$("#cbMarketingSource").val(loThat.frMarketingSourceObject.name);
} else {
$("#cbMarketingSource").val("---");
}
}
loThat.nwAssignedAgentObject = null;
loThat.nwPhonenumberObject = null;
loThat.nwMessageObject = null;
loThat.nwFormObject = null;
loThat.nwCallStatusObject = null;
loThat.nwCallBdcStatusObject = null;
loThat.nwMarketingSourceObject = null;
loThat.nwApiCheckObject = { id: 0 };
loThat.nwAdfImportCheckObject = { id: 0 };
loThat.nwImportCheckObject = { id: 0 };
loThat.nwSmsCheckObject = { id: 0 };
loThat.nwFormCheckObject = { id: 0 };
loThat.nwPhoneCheckObject = { id: 0 };
});
$("#btnResetFilters").on("click", function(ev) {
loThat.btnReset = true;
// Reset date filters
$("#date-from").data("DateTimePicker").date(loThat.ogFromDate);
$("#date-to").data("DateTimePicker").date(loThat.ogToDate);
$("#chkPhone, #chkForm, #chkSms, #chkApi, #chkAdfImport, #chkImport").prop("checked", false);
loThat.frAssignedAgentObject = null;
loThat.nwAssignedAgentObject = null;
loThat.frApiCheckObject = { id: 0 };
loThat.nwApiCheckObject = null;
loThat.frAdfImportCheckObject = { id: 0 };
loThat.nwAdfImportCheckObject = null;
loThat.frImportCheckObject = { id: 0 };
loThat.nwImportCheckObject = null;
loThat.frFormCheckObject = { id: 0 };
loThat.nwFormCheckObject = null;
loThat.frSmsCheckObject = { id: 0 };
loThat.nwSmsCheckObject = null;
loThat.frPhoneCheckObject = { id: 0 };
loThat.nwPhoneCheckObject = null;
loThat.frPhonenumberObject = null;
loThat.nwPhonenumberObject = null;
loThat.frMessageObject = null;
loThat.nwMessageObject = null;
loThat.frFormObject = null;
loThat.nwFormObject = null;
loThat.frCallStatusObject = null;
loThat.nwCallStatusObject = null;
loThat.frCallBdcStatusObject = null;
loThat.nwCallBdcStatusObject = null;
loThat.frMarketingSourceObject = null;
loThat.nwMarketingSourceObject = null;
$("#cbPhoneLeadSource, #cbFormLeadSource, #cbSmsLeadSource, #cbStatus, #cbBdcStatus, #cbAssignedAgent, #cbMarketingSource").val("---");
loThat.reloadTable();
});
$("#date-from").on("click", function(ev) {
if (loThat.btnReset === true) {
loThat.btnReset = false;
}
});
$("#date-to").on("click", function(ev) {
if (loThat.btnReset === true) {
loThat.btnReset = false;
}
});
$("#myLeadEditModal").on("shown.bs.modal", function(ev) {
loThat.getLeadDetails(loThat.editLeadId);
});
$("#btnEditApply").on("click", function(ev) {
loThat.setLeadDetails(loThat.editLeadId);
});
$('.campaign_dd_add').off().on('click', function() {
loThat.gloddModeAdding = true;
$(this).hide();
$('#campaign_dd_input').val('').focus();
$('.campaign_dd_text, .campaign_dd_ok, .campaign_dd_cancel').show();
$('.campaign_dd, .campaign_dd_edit').hide();
});
$('.campaign_dd_edit').off().on('click', function() {
var campaign_dd = $('#campaign :selected');
var campaign_id = campaign_dd.val();
var campaign_text = campaign_dd.text();
loThat.gloddModeEditing = true;
$(this).hide();
$('.campaign_dd_text, .campaign_dd_ok, .campaign_dd_cancel').show();
$('.campaign_dd, .campaign_dd_add').hide();
$('#campaign_dd_input').val(campaign_text).focus();
});
$('.campaign_dd_ok').off().on('click', function() {
var textField = $("#campaign_dd_input").val();
if (textField) {
$('.campaign_dd, .campaign_dd_add').show();
$('.campaign_dd_text, .campaign_dd_ok, .campaign_dd_cancel').hide();
if (loThat.gloddModeAdding) {
loThat.setCampaign(-1, textField, 'add');
loThat.getCampaigns();
} else
if (loThat.gloddModeEditing) {
var campaign_dd = $('#campaign :selected');
var campaign_id = campaign_dd.val();
loThat.setCampaign(campaign_id, textField, 'edit');
loThat.getCampaigns();
}
loThat.gloddModeAdding = false;
loThat.gloddModeEditing = false;
loThat.getCampaigns();
}
});
$('.campaign_dd_cancel').off().on('click', function() {
var selectedCampaign = $('#campaign').val();
$('.campaign_dd, .campaign_dd_add').show();
$('.campaign_dd_text, .campaign_dd_ok, .campaign_dd_cancel').hide();
$("#campaign_dd_input").val('');
if (selectedCampaign && selectedCampaign > 0) {
$('.campaign_dd_edit').show();
}
$('#campaign_dd_input').val('');
loThat.gloddModeAdding = false;
loThat.gloddModeEditing = false;
});
},
getCampaigns: function() {
var loThat = this;
var campaignDetailsUrl = '/contacts/campaigns';
$.ajax({
url: campaignDetailsUrl,
type: 'GET',
success: function(data) {
loThat.gloDefaultCampaigns = data.default_campaign;
loThat.buildCampaignDropDown(data.campaigns);
}
});
},
setCampaign: function(paId, paText, type) {
var loThat = this;
var campaignOptions = {
id: paId,
text: paText
};
var queryString = $.param(campaignOptions);
var campaignDetailsUrl = '/contacts/campaigns?'+queryString;
$.ajax({
url: campaignDetailsUrl,
type: 'POST',
success: function(data) {
if (data.result == true) {
if (type == 'add') {
loThat.createFlashMsg($('#divLeadForm'), 'Campaign successfully added.', 'success', 'leadedit');
} else {
loThat.createFlashMsg($('#divLeadForm'), 'Campaign successfully updated.', 'success', 'leadedit');
}
} else {
if (type == 'add') {
loThat.createFlashMsg($('#divLeadForm'), 'Error adding campaign.', 'danger', 'leadedit');
} else {
loThat.createFlashMsg($('#divLeadForm'), 'Error updating campaign.', 'danger', 'leadedit');
}
}
},
error: function(data) {
if (type == 'add') {
loThat.createFlashMsg($('#divLeadForm'), 'Error adding campaign.', 'danger', 'leadedit');
} else {
loThat.createFlashMsg($('#divLeadForm'), 'Error updating campaign.', 'danger', 'leadedit');
}
}
});
},
buildCampaignDropDown: function(campaigns) {
var loThat = this;
var campaign_dd = $('.campaign_dd');
var campaignString = "<label for='campaign' class='control-label'>Campaign</label>";
loThat.gloCampaignCount = 0
campaignString += "<select id='campaign' name='campaign' class='form-control'>";
campaignString += "<option value=''></option>";
if (campaigns) {
var selected = "";
for ( i in campaigns) {
loThat.gloCampaignCount++;
if (i == loThat.gloSelectedCampaign) {
selected = "selected";
} else {
selected = "";
}
campaignString += "<option value='" + i + "' " + selected + ">" + campaigns[i] + "</option>";
}
}
campaignString += "</select>";
campaign_dd.html(campaignString);
if (loThat.gloSelectedCampaign == undefined || loThat.gloSelectedCampaign == null) {
$('.campaign_dd').addClass('is-empty');
}
$('#campaign').off().on('change', function() {
var value = $('#campaign').val();
if (value == undefined || value == null || value == "") {
value = -1;
}
if(!loThat.gloDefaultCampaigns) {
if (value < 0) {
$('.campaign_dd_edit').hide();
} else {
$('.campaign_dd_edit').show();
}
}
loThat.gloSelectedCampaign = value;
$('#campaign_id').val(value);
if (loThat.gloSelectedCampaign == undefined || loThat.gloSelectedCampaign == null) {
$('.campaign_dd').addClass('is-empty');
}
});
},
loadStyles: function() {
$("#leads-datatable_filter label").addClass("form-group");
$("#leads-datatable_length label").addClass("form-group");
$(".dataTables_filter input").attr("placeholder", "Search Records");
},
loadSideBarTexts: function(paTotalLeads, paTotalPhone, paUniquePhone, paTotalMessages, paUniqueMessages, paTotalForm, paUniqueForm) {
$(".unique-leads").html(paTotalLeads + "<graph> from all sources</graph>");
$(".unique-calls").html(paUniquePhone + "<graph> "+ paTotalPhone +" total calls </graph>");
$(".unique-messages").html(paUniqueMessages + "<graph> "+ paTotalMessages +" total messages </graph>");
$(".unique-form-leads").html(paUniqueForm + "<graph> " + paTotalForm + " total form leads </graph>");
},
refreshGraph: function(paLead, paForm, paPhone, paMessage, paLabel) {
var loWidth = window.innerWidth,
loGraphHeight = 400,
loRightBuffer = 40,
loChartOffset = 60,
loLabelOffset = 2,
loXOffset = -10,
loYOffset = 10,
loFullWidth = false;
if (loWidth < 640) {
loRightBuffer = 5;
loChartOffset = 12;
loLabelOffset = 6;
loXOffset = 0;
loYOffset = 0;
$(".graph-section").css("padding-left", 0).css("padding-right", 0);
$(".graph-chart-content").css("padding-left", 0).css("padding-right", 0);
}
if (paLabel.length > 1) {
loFullWidth = true;
}
var loChart = new Chartist.Line("#leadLineChart", {
// Our labels and three data series
labels: paLabel,
series: [
paLead,
paPhone,
paMessage,
paForm
]}, {
fullWidth: loFullWidth,
chartPadding: {
right: loRightBuffer
},
// We are setting a few options for our chart and override the defaults
// Set hight of the chart
height: loGraphHeight,
// Don't draw the line chart points
showPoint: true,
// Disable line smoothing
lineSmooth: false,
// X-Axis specific configuration
axisX: {
labelOffset: {
x: loXOffset,
y: loYOffset
},
// We can disable the grid for this axis
showGrid: true,
// and also don't show the label
showLabel: true,
labelInterpolationFnc: function skipLabels(value, index, labels) {
if (labels.length > 15) {
return index % loLabelOffset === 0 ? value : null;
} else {
return value;
}
}
},
// Y-Axis specific configuration
axisY: {
// Lets offset the chart a bit from the labels
low: 0,
offset: loChartOffset,
// The label interpolation function enables you to modify the values
// used for the labels on each axis. Here we are converting the
// values into million pound.
labelInterpolationFnc: function(value) {
return value;
},
onlyInteger: true
}
});
},
reloadTable: function() {
var loThat = this;
loThat.tableApi.destroy();
loThat.loadTable(loThat.setTableUrl());
},
populateDropDowns: function(paControl, paDict, paShortName) {
var loThat = this;
var loHtml = "";
loHtml = loHtml + '<option id="' + -1 +'" class="'+paShortName+' ">---</option>';
for (var lpItem in paDict) {
if (paDict.hasOwnProperty(lpItem)) {
loHtml = loHtml + '<option class="'+paShortName+'" id="'+ lpItem +'">'+ paDict[lpItem] +'</option>';
}
}
if (paShortName === "assigned_agent") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwAssignedAgentObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "phone_source") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwPhonenumberObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "message_source") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwMessageObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "form_source") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwFormObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "call_status") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwCallStatusObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "call_bdc_status") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwCallBdcStatusObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
if (paShortName === "marketing_data") {
$("#" + paControl).html(loHtml).on("change", function(ev) {
var loItem = $(this).children(":selected");
loThat.nwMarketingSourceObject = {
id: (loItem.attr("id") == -1) ? null : loItem.attr("id"),
name: loItem.val()
};
});
}
},
setTableUrl: function() {
var loThat = this,
loUrl = "/contacts/data",
df = "?df=",
dt = "dt=",
ms = "ms=",
aa = "aa=",
fs = "fs=",
ps = "ps=",
as = "as=",
is = "is=",
cs = "cs=",
cbs = "cbs=",
sas = "sas=",
sais = "sais=",
sis = "sis=",
sts = "sts=",
stp = "stp=",
stf = "stf=",
mks = "mks=";
aa += loThat.getFilter("assigned_agent") + "&";
df += loThat.fromDate.format("MMDDYYYY") + "&";
dt += loThat.toDate.format("MMDDYYYY") + "&";
fs += loThat.getFilter("form_source") + "&";
ms += loThat.getFilter("message_source") + "&";
ps += loThat.getFilter("phone_source") + "&";
cs += loThat.getFilter("call_status") + "&";
cbs += loThat.getFilter("call_bdc_status") + "&";
sas += loThat.getFilter("api_check") + "&";
sais += loThat.getFilter("adf_import_check") + "&";
sis += loThat.getFilter("import_check") + "&";
stf += loThat.getFilter("form_check") + "&";
stp += loThat.getFilter("phone_check") + "&";
sts += loThat.getFilter("sms_check") + "&";
mks += loThat.getFilter("marketing_source");
loUrl += df + dt + aa + fs + ms + ps + cs + cbs + sas + sais +sis + stp + stf+ sts + mks;
loThat.searchUrl = loUrl;
return loUrl;
},
getContactAgents: function() {
var loThat = this;
$.ajax({
type: "GET",
url: '/contacts/agents',
contentType: 'application/json',
success: function(data, textStatus) {
if (data) {
if (data.agents != undefined && data.agents != null && data.agents.length > 0) {
var loOptions = "";
var loAgents = data.agents;
loOptions = loOptions + '<option value="Select agent...">Select agent...</option>';
for(var i = 0; i < loAgents.length; i++) {
var loAgent = loAgents[i];
loOptions = loOptions + '<option value="'+ loAgent[0] +'">' + loAgent[1] + '</option>';
}
$('#addAgent').html(loOptions);
$('#addAgent').val("Select agent...");
}
}
}
});
},
addFormCheckStyling: function(control, message) {
if (control.parent().find('.field-error').length == 0) {
control.parent().addClass('has-error');
control.parent().append('<div class="list-unstyled text-danger field-error">' + message + '</div>');
control.focus();
}
},
validEmailFormatCheck: function(control, message, regEx) {
var loControlValue = control.val();
if (loControlValue != undefined && loControlValue != null && loControlValue != "") {
if (!loControlValue.match(regEx)) {
if (control.parent().find('.field-error').length == 0) {
control.parent().addClass('has-error');
control.parent().append('<div class="list-unstyled text-danger field-error">' + message + '</div>');
control.focus();
}
return false;
}
}
return true;
},
validFormatCheck: function(control, message, regEx) {
var loControlValue = control.val().replace(" ", "").replace("(", "").replace(")", "").replace("-", "");
if (loControlValue != undefined && loControlValue != null && loControlValue != "") {
if (!loControlValue.match(regEx)) {
if (control.parent().find('.field-error').length == 0) {
control.parent().addClass('has-error');
control.parent().append('<div class="list-unstyled text-danger field-error">' + message + '</div>');
control.focus();
}
return false;
}
}
return true;
},
validRequiredCheck: function(control) {
var loControlValue = control.val();
if (loControlValue == undefined || loControlValue == null || loControlValue == "") {
if (control.parent().find('.field-error').length == 0) {
control.parent().append('<div class="list-unstyled text-danger field-error">This field is required.</div>');
control.focus();
}
return false;
}
return true;
},
addContactDetails: function() {
var loThat = this;
var loFirstNameControl = $('#addFirstName');
var loFirstname = loFirstNameControl.val();
var loLastNameControl = $('#addLastName');
var loLastname = loLastNameControl.val();
var loPhonenumberControl = $('#addPhonenumber');
var loPhonenumber = loPhonenumberControl.val();
var loEmailControl = $('#addEmail');
var loEmail = loEmailControl.val();
var loStatus = $("#addStatus option:selected").val();
var loMarketingSource = $("#addMarketingSource option:selected").val();
var loAgentId = $("#addAgent option:selected").val();
var loAgentText = $("#addAgent option:selected").text();
var loAddress1 = $('#addAddress1').val();
var loAddress2 = $('#addAddress2').val();
var loCity = $('#addCity').val();
var loState = $('#addState').val();
var loZip = $('#addZip').val();
var loBirthdayControl = $('#addBirthday');
var loBirthday = loBirthdayControl.val();
var loCountry = $('#addCountry').val();
var loDoNotCall = $('#chkAddDoNotCallPhone').prop("checked");
var loUnsubscribed = $('#chkAddIsUnsubscribed').prop("checked");
var loNote = $('#addNote').val();
$('#addLeadModal .field-error').remove();
$('#addLeadModal>div').removeClass('has-error');
//Required Validation
var loValidPhonenumber = loThat.validRequiredCheck(loPhonenumberControl);
var loValidLastName = loThat.validRequiredCheck(loLastNameControl);
var loValidFirstName = loThat.validRequiredCheck(loFirstNameControl);
//Format Validation
var loValidBirthday = loThat.validFormatCheck(loBirthdayControl, 'Invalid date. Dates must be in mm/dd/yyyy format.', loThat.gloDateRegEx);
var loValidPhonenumber = loThat.validFormatCheck(loPhonenumberControl, 'Invalid phonenumber.', loThat.gloPhonenumberRegEx);
var loValidEmail = loThat.validEmailFormatCheck(loEmailControl, 'Invalid email.', loThat.gloEmailRegEx);
if (loValidFirstName && loValidLastName && loValidPhonenumber && loValidBirthday && loValidPhonenumber) {
$.ajax({
type: "POST",
url: '/contacts/details/add',
contentType: 'application/json',
data: JSON.stringify({
"firstname": loFirstname,
"lastname": loLastname,
"status": loStatus,
"marketing_source": loMarketingSource,
"phonenumber": loPhonenumber,
"agent_assigned_id": loAgentId,
"agent_assigned_text": loAgentText,
"email": loEmail,
"note": loNote,
"address1": loAddress1,
"address2": loAddress2,
"city": loCity,
"state": loState,
"zip": loZip,
"country": loCountry,
"birthday": loBirthday,
"donotcall": loDoNotCall,
"unsubscribed": loUnsubscribed
}),
success: function(data, textStatus) {
if (data.success == true) {
$("#addLeadModal").modal("hide");
loThat.reloadTable();
} else {
var missing_message = '';
var error_message = '';
var invalid_message = '';
var final_message = '';
$('#add-contact-warning').html('');
if (data.missing_message.length > 0) {
missing_message = 'The following field(s) are missing: ';
for(var i = 0; i < data.missing_message.length; i++) {
if (i == (data.missing_message.length - 1)) {
missing_message += data.missing_message[i];
} else {
missing_message += data.missing_message[i] + ", ";
}
}
}
if (data.error_message.length > 0) {
error_message = '';
for(var i = 0; i < data.error_message.length; i++) {
if (i == (data.error_message.length - 1)) {
error_message += data.error_message[i];
} else {
error_message += data.error_message[i] + "<br>";
}
}
}
if (data.invalid_message.length > 0) {
invalid_message = '';
for(var i = 0; i < data.invalid_message.length; i++) {
if (i == (data.invalid_message.length - 1)) {
invalid_message += data.invalid_message[i];
} else {
invalid_message += data.invalid_message[i] + "<br>";
}
}
}
if (missing_message.length > 0) {
final_message += missing_message + "<br>";
}
if (error_message.length > 0) {
final_message += error_message + "<br>";
}
if (invalid_message.length > 0) {
final_message += invalid_message + "<br>";
}
if (invalid_message.length == 0 && missing_message.length == 0 && error_message.length == 0) {
$('#add-contact-warning').html('Error adding lead.').show();
}
else {
if (final_message.toLowerCase().includes('phonenumber')) {
loThat.addFormCheckStyling(loPhonenumberControl, final_message);
}
}
}
},
error: function() {
$('#add-contact-warning').html('Error adding lead.').show();
}
});
}
},
getLeadDetails: function(leadId) {
var loThat = this;
$("#editFirstName, #editLastName, #editPhonenumber, #editEmail, #editNote").val("");
$.ajax({
type: "GET",
url: '/contacts/details/' + leadId,
contentType: 'application/json',
success: function(data, textStatus) {
if (data) {
$("#noteCheck").hide();
$('.lead-view-notes').attr("href", "/contacts/edit/" + leadId + "#notes");
$("#editFirstName").val(data.firstname);
$("#editLastName").val(data.lastname);
$("#editPhonenumber").val(data.phonenumber);
$("#editEmail").val(data.email);
loThat.gloSelectedCampaign = data.campaign_id;
if (data.notedate) {
$("#noteCheck").show();
$("#prevNoteDate").text(data.notedate);
$("#prevNoteText").text(data.notetext);
$("#prevNoteUser").text(data.noteuser);
}
if (data.status != undefined && data.status != null && data.status != "") {
$("#editStatus").val(data.status);
} else {
$("#editStatus").val("Select status...");
}
if (data.bdc_status != undefined && data.bdc_status != null && data.bdc_status != "") {
$("#editBdcStatus").val(data.bdc_status);
} else {
$("#editBdcStatus").val("Select BDC status...");
}
if (data.source != undefined && data.source != null && data.source != "") {
$("#editSource").val(data.source);
} else {
$("#editSource").val("Select marketing source...");
}
if (data.agents != undefined && data.agents != null && data.agents.length > 0) {
var loOptions = "";
var loAgents = data.agents;
var loNoAgent = true;
if (data.agentassigned != undefined && data.agentassigned != null && data.agentassigned != "")
loNoAgent = false;
if (loNoAgent) {
loOptions = loOptions + '<option value="Select agent...">Select agent...</option>';
}
for(var i = 0; i < loAgents.length; i++) {
var loAgent = loAgents[i];
loOptions = loOptions + '<option value="'+ loAgent[0] +'">' + loAgent[1] + '</option>';
}
$('#editAgent').html(loOptions);
if (loNoAgent) {
$('#editAgent').val("Select agent...");
} else {
$('#editAgent').val(data.agentassigned);
}
}
}
}
});
loThat.getCampaigns();
},
setLeadDetails: function(leadId) {
var loThat = this;
var loFirstName = $("#editFirstName").val();
var loLastName = $("#editLastName").val();
var loEmail = $("#editEmail").val();
var loStatus = $("#editStatus").val();
var loBdcStatus = $("#editBdcStatus").val();
var loSource = $("#editSource").val();
var loAgent = $("#editAgent").val();
var loNote = $("#editNote").val();
var loCampaignId = $("#campaign").val();
$.ajax({
type: "POST",
url: '/contacts/details/' + leadId,
contentType: 'application/json',
data: JSON.stringify({
"contact_id": leadId,
"firstname": loFirstName,
"lastname": loLastName,
"status": loStatus,
"bdc_status": loBdcStatus,
"source": loSource,
"agentassigned": loAgent,
"email": loEmail,
"campaign_id": loCampaignId,
"note": loNote
}),
success: function(data, textStatus) {
if (data == "OK") {
$("#myLeadEditModal").modal("hide");
$("#editFirstName, #editLastName, #editPhonenumber, #editEmail, #editNote").val("");
loThat.reloadTable();
}
}
});
},
objectEmpty: function(paObject) {
if (paObject === null || paObject === undefined || paObject.length == 0)
return true;
else if (paObject.length > 0) {
var count = 0;
for(var i = 0; i < paObject.length; i++) {
if (paObject[i] == 0) {
count = count + 1;
}
}
if (count == paObject.length) {
return true;
}
}
else
return false;
},
getFirstDayOfMonth: function() {
var loDate = new Date(),
loYear = loDate.getFullYear(),
loMonth = loDate.getMonth();
return moment.utc(new Date(loYear, loMonth, 1));
},
getLastDayOfMonth: function() {
var loDate = new Date(),
loYear = loDate.getFullYear(),
loMonth = loDate.getMonth();
return moment.utc(new Date(loYear, loMonth + 1, 0));
},
getFirstDayOfYear: function() {
var loThisYear = (new Date()).getFullYear();
var loStart = new Date("1/1/" + loThisYear);
return moment.utc(loStart.valueOf());
},
getLastDayOfYear: function() {
var loThisYear = (new Date()).getFullYear();
var loEnd = new Date("12/31/" + loThisYear);
return moment.utc(loEnd.valueOf());
}
};
// function used to add spinner loader
function spinnerAdded() {
document.getElementById("loaderContainer").style.display = "block";
document.getElementById("loader").style.display = "block";
document.getElementById("postLoader").style.display = "none";
}//end add spinner loader function
// function used to remove spinner loader
function spinnerRemoved() {
document.getElementById("loaderContainer").style.display = "none";
document.getElementById("loader").style.display = "none";
document.getElementById("postLoader").style.display = "block";
}//end remove spinner loader function
$(document).ready(function() {
contacts.init();
});