HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
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;