File: //home/arjun/projects/buyercall_new/buyercall/buyercall/assets/components/contacts/contacts_edit.js
var utils = require('../utils');
var moment = require('moment');
var LeadCallView = require('../lead-call');
const LEAD_PRESIGNED_URL = `//${appConfig.server_url}/presigned_audio_url`;
const CAMPAIGNS_URL = `//${appConfig.server_url}/contacts/campaigns`;
var contacts_edit = {
loUrl: window.location.href,
loCurrentNoteId: "",
loCurrentNoteText: "",
loChangedNotes: [],
loTable: $('#tbNotes'),
gloDateRegEx: /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/,
gloEmailRegEx: /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/,
gloVinRegEx: /(^$|([A-Za-z0-9]){17})/,
gloYearRegEx: /(^$|^([0-9]){4})/,
gloDefaultCampaigns: true,
gloSelectedCampaign: -1,
gloCampaignCount: 0,
init: function() {
var loThat = this;
var setBirthday = $("#birthday").val();
var defaultBirthday = "";
var ddModeAdding = false;
var ddModeEditing = false;
var selectedCampaign = $("#campaign_id").val();
if (selectedCampaign == undefined || selectedCampaign == null || selectedCampaign == "") {
loThat.gloSelectedCampaign = -1;
} else {
loThat.gloSelectedCampaign = selectedCampaign;
}
$("#birthday").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//,
//defaultDate: defaultBirthday
});
if (setBirthday != undefined && setBirthday != null && setBirthday != "") {
defaultBirthday = moment(setBirthday, 'MM/DD/YYYY');
$("#birthday").data("DateTimePicker").date(defaultBirthday);
}
loThat.getCampaigns();
if (!loThat.gloDefaultCampaigns) {
if (loThat.gloSelectedCampaign > 0) {
$('.campaign_dd_edit').show();
}
}
loThat.updateNoteObject();
// loThat.loadVoiceMailUI();
$('#firstname, #lastname, #progress_status, #notes').on('change', function() {
loThat.createFlashMsg($('#divLeadForm'), 'Remember to save changes.', 'info', 'leadedit');
});
$('#current_vin, #interest_vin').on('keydown', function(e) {
var currentTest = $(this).val();
if ((currentTest.length >= 17) && (e.keyCode != 8) && (e.keyCode != 46)) {
e.preventDefault();
}
});
$('#current_year, #interest_year').on('keypress', function(e) {
if ((e.keyCode == 8) || (e.keyCode == 46) || (e.keyCode >= 48 && e.keyCode <= 57)) {
var currentTest = $(this).val();
if (currentTest.length >= 4) {
e.preventDefault();
}
} else {
e.preventDefault();
}
});
$('#btnContactSubmit').on('click', function(e) {
var loBirthdayControl = $('#birthday');
var loBirthday = loBirthdayControl.val();
var loEmailControl = $('#email');
var loEmail = loEmailControl.val();
var loVinControl = $('#current_vin');
var loModelYearControl = $('#current_year');
//Format Validation
var loValidBirthday = loThat.validFormatCheck(loBirthdayControl, 'Invalid date. Dates must be in mm/dd/yyyy format.', loThat.gloDateRegEx);
var loValidEmail = loThat.validFormatCheck(loEmailControl, 'Invalid email.', loThat.gloEmailRegEx);
var loValidVIN = loThat.validFormatCheck(loVinControl, 'Invalid VIN. VIN must be 17 characters long.', loThat.gloVinRegEx);
var loValidYear = loThat.validFormatCheck(loModelYearControl, 'Invalid Year.', loThat.gloYearRegEx);
if (!loValidBirthday || !loValidEmail || !loValidVIN || !loValidYear) {
e.preventDefault();
}
});
$('#birthday').on("input", function() {
if ($(this).val().length > 0) {
$(this).parent().parent().removeClass('is-empty');
} else {
$(this).parent().parent().addClass('is-empty');
}
});
$('#birthday').on("dp.change", function() {
if ($(this).val().length > 0) {
$(this).parent().parent().removeClass('is-empty');
} else {
$(this).parent().parent().addClass('is-empty');
}
});
$('.btn-disable').on('click', function() {
var loRow = $(this).closest('tr'),
loRowId = loRow.attr('id'),
loTextCell = loRow.find('.note-text'),
loTextCellText = loTextCell.text();
loThat.disableNote(loRowId, loTextCellText);
loRow.hide();
loThat.createFlashMsg($('#divLeadForm'), 'Remember to save changes.', 'info', 'leadedit');
});
$('.btn-edit').on('click', function() {
var loRow = $(this).closest('tr'),
loTextCell = loRow.find('.note-text');
loThat.loTable.find('tr').removeClass('lead-note-clicked');
loThat.loTable.find('.note-text').attr('contenteditable', false);
loThat.loCurrentNoteText = loTextCell.text();
loThat.loCurrentNoteId = loRow.attr('id');
loRow.addClass('lead-note-clicked');
loTextCell.attr('contenteditable', true);
loThat.createFlashMsg($('#divLeadForm'), 'Remember to save changes.', 'info', 'leadedit');
});
$('.note-text').on('focusout', function() {
var loTempNoteText = $(this).text(),
loTempNoteId = $(this).parent().attr('id'),
loRow = $('#' + loTempNoteId),
loTempNoteTextMode = $(this).attr('contenteditable');
if (loThat.loCurrentNoteId == loTempNoteId && loThat.loCurrentNoteText != loTempNoteText) {
var loUpdated = loThat.addNote(loTempNoteId, loThat.loCurrentNoteText, loTempNoteText);
if(loUpdated) {
loRow.removeClass('lead-note-clicked').addClass('lead-note-changed');
} else {
loRow.removeClass('lead-note-clicked').removeClass('lead-note-changed');
}
} else {
loRow.removeClass('lead-note-clicked');
}
$(this).attr('contenteditable', false);
loThat.cleanUI();
});
$(".btn-lead-call").off().on("click", function(e) {
var id = this.getAttribute("data-lead-id");
new LeadCallView({
leadCall: true,
callId: id
}).render();
e.preventDefault();
});
$('#btnNewApplication').off().on('click', function(e) {
var leadId = this.getAttribute("data-new-app-id");
$("#newAppData").val(leadId);
$("#newApplicationModal").modal();
});
$('#btnAddNewAppCreate').off().on('click', function(e) {
var formId = $("#contactForm").val();
if (formId != "Select form...") {
var contactId = $("#newAppData").val();
window.location.replace("/form_leads/add/" + contactId + "/" + formId);
}
});
$('.campaign_dd_add').off().on('click', function() {
ddModeAdding = 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();
ddModeEditing = 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 (ddModeAdding) {
loThat.setCampaign(-1, textField, 'add');
loThat.getCampaigns();
} else
if (ddModeEditing) {
var campaign_dd = $('#campaign :selected');
var campaign_id = campaign_dd.val();
loThat.setCampaign(campaign_id, textField, 'edit');
loThat.getCampaigns();
}
ddModeAdding = false;
ddModeEditing = 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('');
ddModeAdding = false;
ddModeEditing = false;
});
if (loThat.loUrl.includes("#notes")) {
$('.notes-select').trigger( "click" );
}
function onHashChange() {
var hash = window.location.hash;
if (hash) {
// using ES6 template string syntax
$(`[data-toggle="tab"][href="${hash}"]`).trigger('click');
}
}
window.addEventListener('hashchange', onHashChange, false);
onHashChange();
},
getCampaigns: function() {
var loThat = this;
var campaignDetailsUrl = `${CAMPAIGNS_URL}`;
$.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 = `${CAMPAIGNS_URL}?${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);
$('#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);
});
},
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().parent().find('.field-error').length == 0) {
control.parent().parent().addClass('has-error');
control.parent().parent().append('<div class="list-unstyled text-danger field-error">' + message + '</div>');
control.focus();
}
return false;
}
}
return true;
},
createFlashMsg: function($container, message, status, type) {
var $flashMsgContainer = $('#flash-messages');
var $alertContainer = $('#flash-messages .'+type+'.alert');
if (!$flashMsgContainer[0]) {
$container.before('<div id="flash-messages">'+
'<div class="'+type+' alert alert-'+status+'" role="alert">'+
`${message}` +
'</div>'+
'</div>');
} else if(!$alertContainer[0]) {
$flashMsgContainer.append('<div class="'+type+' alert alert-'+status+'" role="alert">'+
`${message}` +
'</div>');
} else {
$alertContainer.html(`${message}`);
}
},
addNote: function(paId, paOldText, paNewText) {
var loFound = false,
loUpdated = false,
loThat = this;
for(var i = 0; i < loThat.loChangedNotes.length; i++) {
var loNote = loThat.loChangedNotes[i];
if(loNote.id == paId) {
loFound = true;
//Update the note
if(loNote.oldText != paNewText) {
loNote.newtext = paNewText;
loThat.loChangedNotes[i] = loNote;
loUpdated = true;
break;
} else {
//Remove the note
removeNote(paId);
loUpdated = false;
}
}
}
if(!loFound) {
var loNewNote = {
id: paId,
newtext: paNewText,
oldtext: paOldText,
isenabled: true
};
loThat.loChangedNotes.push(loNewNote);
loUpdated = true;
}
loThat.updateNoteObject();
return loUpdated;
},
disableNote: function(paId, paText) {
var loFound = false,
loThat = this;
for(var i = 0; i < loThat.loChangedNotes.length; i++) {
var loNote = loThat.loChangedNotes[i];
if(loNote.id == paId) {
loNote.isenabled = false;
loFound = true;
loThat.loChangedNotes[i] = loNote;
break;
}
}
if(!loFound) {
var loNewNote = {
id: paId,
newtext: paText,
oldtext: paText,
isenabled: false
};
loThat.loChangedNotes.push(loNewNote);
}
loThat.updateNoteObject();
},
removeNote: function(paId) {
var loThat= this;
for(var i = 0; i < loThat.loChangedNotes.length; i++) {
if(loThat.loChangedNotes[i].id == paId) {
loThat.loChangedNotes.splice(i,1);
break;
}
}
loThat.updateNoteObject();
},
cleanUI: function() {
var loTable = $('.lead-notes'),
loThat = this;
loThat.loTable.find('tr').each(function (x, el) {
var loRow = $(this),
loRowId = loRow.attr('id'),
loFound = false;
for(var i = 0; i < loThat.loChangedNotes.length; i++) {
var loNote = loThat.loChangedNotes[i];
if(loRowId == loNote.id && loNote.oldtext != loNote.newtext) {
loFound = true;
break;
} else
if(loRowId == loNote.id && loNote.oldtext == loNote.newtext) {
removeNote(loRowId);
loFound = false;
break;
}
}
if(loFound) {
loRow.removeClass('lead-note-clicked').addClass('lead-note-changed');
} else {
loRow.removeClass('lead-note-clicked').removeClass('lead-note-changed');
}
});
},
updateNoteObject: function() {
var loThat = this;
var loControl = $('#notes').find('#edited_notes_str');
loControl.val(JSON.stringify(loThat.loChangedNotes));
},
loadVoiceMailUI: function() {
var loThat = this;
if ($('.mediPlayer').length > 0) {
// $('.mediPlayer').mediaPlayer();
$('.mediPlayer').on('mouseover', function() {
var parentHolder = $(this);
var audioClip = parentHolder.find('.listen');
if (audioClip.attr('src') == "") {
audioClip.attr('src', 'pending');
var searchOptions = {
url: parentHolder.attr('data-url')
};
var queryString = $.param(searchOptions);
var fileDetailsUrl = `${LEAD_PRESIGNED_URL}?${queryString}`;
$.ajax(fileDetailsUrl, {
success: function(data) {
audioClip.attr('src', data);
loThat.setAudioRecordingDetails(parentHolder, audioClip);
},
error: function(data) {
parentHolder.attr("title", "Error loading clip...");
}
});
} else {
if (audioClip.attr('src') != "pending") {
loThat.setAudioRecordingDetails(parentHolder, audioClip);
}
}
});
}
},
setAudioRecordingDetails: function(paParentElement, paAudioElement) {
if(paAudioElement.length > 0) {
var currentTime = parseInt(paAudioElement[0].currentTime);
var durationTime = parseInt(paAudioElement[0].duration);
var loading = false;
var currentMinutes = Math.floor(currentTime / 60);
var currentSeconds = currentTime - currentMinutes * 60;
var durationMinutes = Math.floor(durationTime / 60);
var durationSeconds = durationTime - durationMinutes * 60;
if(currentMinutes < 10) {
currentMinutes = '0' + currentMinutes;
}
if (currentSeconds < 10) {
currentSeconds = '0' + currentSeconds;
}
if(durationMinutes == undefined || durationMinutes == null || isNaN(durationMinutes)) {
loading = true;
} else
if(durationMinutes < 10) {
durationMinutes = '0' + durationMinutes;
}
if(durationSeconds == undefined || durationSeconds == null || isNaN(durationSeconds)) {
loading = true;
} else
if (durationSeconds < 10) {
durationSeconds = '0' + durationSeconds;
}
if(loading) {
paParentElement.attr('title', "Loading clip details...");
} else {
paParentElement.attr('title', "Current Time: " + currentMinutes + ":" + currentSeconds + " Duration: " + durationMinutes + ":" + durationSeconds);
}
}
}
};
$(document).ready(function() {
contacts_edit.init();
});