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-sms.js
var utils = require('./utils');
var MAX_FILE_SIZE = 4 * 1024 * 1024;
const swal = require('sweetalert2');
//let {showConfirm, createFlashMsg} = utils;
//const { WhisperMessageView } = require('../backbone/whisper_message.js');

var leadSmsView = {

    imageUrl: '',

    agentsVisible: false,

    phonenumber: '',

    init: function() {
        var loThat = this;

        loThat.agentsVisible = false;
        loThat.resetUI();
        loThat.events();
        loThat.initDropzones();
        loThat.setupSMSUploadSection();
    },

    getModalFieldData: function(paLeadID) {
        var loThat = this;

        $.ajax('/api/contacts/message/' + paLeadID, {
            method: 'GET'
        }).done((data) => {
            if (!data) {
                console.error('Failed to retrieve lead call info.');
                return;
            }

            var routineNumbers = data.allRoutingNumbers;
            if (routineNumbers != null) {
                $('.routing-number').html('').append('<option value="-1">Select number...</option>');

                for(var i = 0; i < routineNumbers.length; i++) {
                    var lpNumber = routineNumbers[i];

                    $('.routing-number').append('<option value="'+ lpNumber.number + '">'+ lpNumber.friendlyName +'</option>');
                }
            }

            if (data.routingNumber == undefined || data.routingNumber == null || data.routingNumber == "") {
                $('.routing-number option:first-child').attr("selected", "selected");
            } else {
                $(".routing-number option:contains(" + data.routingNumber + ")").attr('selected', true);
            }

            if (data.name != undefined && data.name != null && data.name != "") {
                $('.toleadDetails').html(data.name + " (" + data.phonenumber + ")");
            } else {
                $('.toleadDetails').html(data.phonenumber);
            }
            $('.toLeadDetailsSelect').val('lead');

            loThat.phonenumber = data.phonenumber;

            if (data.agentView == true) {
                var agents = data.agents;
                loThat.agentsVisible = data.agentView;

                $('.routing-agent').html('').append('<option value="-1">Select agent...</option>');

                for(var i = 0; i < agents.length; i++) {
                    var lpAgent = agents[i];

                    $('.routing-agent').append('<option value="'+ lpAgent[0] + '">'+ lpAgent[1] +'</option>');
                }
                $('.agent-select').show();
            } else {
                $('.agent-select').hide();
            }

            $('.btn-sms').attr('disabled', 'disabled');
        });
    },

    resetUI: function() {
        var loThat = this;

        $('#chkSMSImage').prop('checked', false);
        $("#attachment-upload-section, #remove-mms-attachment").hide();
        $(".sms-attachements").hide();
        $("#smsCharCount").text("500/500");
        $(".smsText").val('');
        loThat.imageUrl = '';
        loThat.phonenumber = '';
        $('.routing-number').children('option:not(:first)').remove();
        $('.agent-select').hide();
        $('.toleadDetails').html('');
    },

    events: function() {
        var loThat = this;

        $('.btn-sms').off().on('click', function() {
            var loMediaUrl = '';
            var loInbound = $('.routing-number').val();
            var loAgentId = $('.routing-agent').val();
            var loPhonenumber = loThat.phonenumber;
            var loText = $(".smsText").val();
            var loSATitle = 'Message Sent';
            var loSAText = 'Your message was successfully sent.';
            var loSAType = 'success';
            var loAgentVisible = loThat.agentsVisible;
            var loAgentProceed = true;

            if (loThat.imageUrl != '') {
                loMediaUrl = loThat.imageUrl;
            }

            if (loAgentVisible) {
                if (loAgentId == "-1") {
                    loAgentProceed = false;
                }
            }

            if (loInbound != "-1" && loText != "" && loPhonenumber != "" && loAgentProceed) {

                $.ajax({
                    type: "POST",
                    url: '/api/contacts/message/' + loInbound,
                    contentType: 'application/json',
                    data: JSON.stringify({
                        "inbound_id": loInbound,
                        "to": loPhonenumber,
                        "agent_id": loAgentId,
                        "agents_visible": loThat.agentsVisible,
                        "text": loText,
                        "media": loMediaUrl
                    }),
                    success: function(data, textStatus) {
                        if (data == "OK") {
                            swal({
                                title: loSATitle,
                                text: loSAText,
                                type: loSAType
                            }).then((value) => {
                                loThat.resetUI();
                                $("#mySms").modal("hide");
                            });
                        }
                    }
                });
            }
        });

        $(".smsText").keyup(function () {
            var maxLength = 500;
            var smsText = $(".smsText").val().length;

            $("#smsCharCount").text(500 - smsText + "/" + maxLength);
            var smsText = maxLength - smsText;

            $(".smsText").text(smsText);

            if ($(".smsText").val().length > 5) {
                var loItem = $('.routing-number').val();
                var loAgent = $('.routing-agent').val();
                var loAgentProceed = true;

                if (loThat.agentsVisible) {
                    if (loAgent == "-1") {
                        loAgentProceed = false;
                    }
                }

                if (loItem != "-1" && loAgentProceed) {
                    $('.btn-sms').removeAttr('disabled');
                }
            } else {
                $('.btn-sms').attr('disabled', 'disabled');
            }
        });

        $('#mySms').on('shown.bs.modal', function (ev) {
            var smsId = $("#smsModalData").val();

            loThat.resetUI();
            loThat.getModalFieldData(smsId);
        });

        $('.routing-number').on('change', function() {
            var loItem = $(this).val();
            var loAgentVisible = loThat.agentsVisible;
            var loAgentProceed = true;

            if (loAgentVisible) {
                var agentId = $(".routing-agent").children("option:selected").val();

                if (agentId > 0) {
                    loAgentProceed = true;
                } else {
                    loAgentProceed = false;
                }
            }

            if (loItem != "-1" && $(".smsText").val().length > 5 && loAgentProceed) {
                $('.btn-sms').removeAttr('disabled');
            } else {
                $('.btn-sms').attr('disabled', 'disabled');
            }
        });

        $('.routing-agent').on('change', function() {
            if (loThat.agentsVisible) {
                var loAgent = $(this).val();
                var loNumber = $('.routing-number').children("option:selected").val();

                if (loNumber != "-1" && $(".smsText").val().length > 5 && loAgent != "-1") {
                    $('.btn-sms').removeAttr('disabled');
                } else {
                    $('.btn-sms').attr('disabled', 'disabled');
                }
            }
        });

        $("#chkSMSImage").on('change', function(e) {
            var doAttachment = $("#chkSMSImage").prop('checked');

            if (doAttachment) {
                $("#attachment-upload-section").show();
                $(".sms-attachements").show();
            } else {
                $("#attachment-upload-section").hide();
                $(".sms-attachements").hide();
            }
        });

        $('#remove-mms-attachment').on('click', function() {
            loThat.handleRemoveMMSUpload();
        });
    },

    initDropzones: function(){
        $('#mySms .upload-music').each(function () {
            let dropzoneControl = $(this)[0].dropzone;
            if (dropzoneControl) {
                dropzoneControl.destroy();
            }
        });
    },

    setupSMSUploadSection: function () {
        var loThat = this;

        $('#mySms .upload-music').dropzone({
            url: '/inbound/sms-attachment',

            headers: {
                'X-CSRFToken': $('meta[name="csrf-token"]').attr('content')
            },

            init: function () {
                this.on('addedfile', function (file) {
                    utils.flash('');

                    if (file.size > MAX_FILE_SIZE) {
                        utils.flash(__('File size must be less than 4 MB.'), 'danger');
                        this.removeAllFiles();
                        return;
                    }
                });
            },

            success: function (file, response, xhr) {
                loThat.imageUrl = response.image_url;

                utils.flash(__('File uploaded successfully.'), 'success');
                $('#attachment-files, #remove-mms-attachment').show();
                $('#attachment-files').html('<div class="card-avatar"><a href="#" class="img"><img class="img" id="mms_image_thumb" src=""></a>');
                $("#mms_image_thumb").attr("src", loThat.imageUrl);
                $('#add-image-section').hide();
                $('.sms-attachements').show();
            },

            error: function (file, response, xhr) {
                utils.flash(__('File upload failed. Please try again.'), 'danger');
            },

            complete: function () { }
        });
    },

    showSMSAttachments: function() {
        if (this.model.get('SMSAutoReplyImageUrl')) {
            this.$('.sms-attachements').show()
            this.$('#add-image-section').hide();
            this.$('#attachment-files').html('<div class="card-avatar"><a href="#" class="img"><img class="img" id="mms_image_thumb" src=""></a>')
            var url = this.model.get('SMSAutoReplyImageUrl')
            this.$("#mms_image_thumb").attr("src", url);
        }
        else {
            this.$('#add-image-section').show();
            this.$('.sms-attachements').hide()
        }
        if (this.model.get('SMSAutoReplyImage')) {
            this.$('#SMSAutoReplyImage').prop('checked', true);
            this.$('#attachment-upload-section').show();
        }
        else {
            this.$('#attachment-upload-section').hide();
            this.$('#SMSAutoReplyImage').prop('checked', false);
            }
    },

    handleRemoveMMSUpload: function() {
        var loThat = this;

        $('#attachment-files, #remove-mms-attachment, .sms-attachements').hide()
        loThat.imageUrl = '';
        $('#SMSAutoReplyImage').prop('checked', true);
        $('#attachment-upload-section, #add-image-section').show();
    }
};

$(document).ready(function() {
    leadSmsView.init();
});