Current File : /var/www/vinorea/modules/sendinblue/views/js/sendinblue.js
/**
 * 2007-2025 PrestaShop
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@prestashop.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer
 * versions in the future. If you wish to customize PrestaShop for your
 * needs please refer to http://www.prestashop.com for more information.
 *
 * @author    PrestaShop SA <contact@prestashop.com>
 * @copyright 2007-2025 PrestaShop SA
 * @license   http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
 * International Registered Trademark & Property of PrestaShop SA
 */

$(document).ready(function () {

    /*------ Tabs functionality --------*/
    $('#tabOrder a').click(function (e) {
        e.preventDefault()
        $(this).tab('show')
    })

    /*------ SMS Credit Notification Starts --------*/
    $('input:radio[name="sms_credit"]').change(function () {
        if ($(this).val() === '1') {
            $('#customer_form').show();
        } else {
            $('#customer_form').hide();
        }
        return false;
    });

    // Setting Update
    $(".sms_credit_cls").click(function () {
        const emailAlert = $(this).attr('emailAlert');
        const limitAlert = $(this).attr('limitAlert');
        const creditAlert = $(this).attr('creditAlert');
        const successAlert = $(this).attr('successAlert');
        const failAlert = $(this).attr('failAlert');
        const sms_credit = $('input:radio[name=sms_credit]:checked').val();
        const email_val = $('input:text[name=sendin_notify_email]').val();
        const limit_val = $('input:text[name=sendin_notify_value]').val();
        const current_val = $("#current_sms_value").text();
        const type = 'sms_credit';

        if (smsSettingValidator(sms_credit, email_val, limit_val, current_val, emailAlert, limitAlert, creditAlert)) {
            $.ajax({
                type: 'POST',
                dataType: 'JSON',
                cache: false,
                async: false,
                url: base_url,
                data: {
                    ajax: true,
                    sms_credit: sms_credit,
                    email_val: email_val,
                    limit_val: limit_val,
                    type: type,
                    action: 'SmsSettings',
                },
                success: function (response) {
                    if (sms_credit === '1') {
                        $('#customer_form').show();
                    } else {
                        $('#customer_form').hide();
                    }

                    if (response.success) {
                        successPopUp(successAlert);
                    } else {
                        failurePopUp(failAlert);
                    }
                }
            });
        }

        return false;
    });

    // Notification Mail
    $(".credit_notify_mail").click(function () {
        const emailAlert = $(this).attr('emailAlert');
        const creditAlert = $(this).attr('creditAlert');
        const successAlert = $(this).attr('successAlert');
        const failAlert = $(this).attr('failAlert');
        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            cache: false,
            async: false,
            url: base_url,
            data: {
                ajax: true,
                action: 'SmsNotificationMail',
            },
            success: function (response) {
                if (response.success === true) {
                    successPopUp(successAlert);
                } else if (response.success === "email_error") {
                    failurePopUp(emailAlert);
                } else if (response.success === "validation_error") {
                    failurePopUp(creditAlert);
                } else {
                    failurePopUp(failAlert);
                }
            }
        });

        return false;
    });
    /*------ SMS Credit Notification Ends --------*/

    /*------ SMS Campaign Starts --------*/
    $('input:radio[name="sib_sms_campaign_toggle"]').change(function () {
        if ($(this).val() === '1') {
            $('#sib_sms_campaign').show();
        } else {
            $('#sib_sms_campaign').hide();
        }

        return false;
    });

    // Campaign Setting Update
    $(".sms_campaign_update").click(function () {
        const successAlert = $(this).attr('successAlert');
        const failAlert = $(this).attr('failAlert');
        const campaign_status = $('input:radio[name=sib_sms_campaign_toggle]:checked').val();
        const campaign_type = $('input:radio[name=Sendin_Sms_Choice]:checked').val();
        const type = 'campaign';

        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            cache: false,
            async: false,
            url: base_url,
            data: {
                ajax: true,
                campaign_status: campaign_status,
                campaign_type: campaign_type,
                type: type,
                action: 'SmsSettings',
            },
            success: function (response) {
                if (campaign_status === '1') {
                    $('#sib_sms_campaign').show();
                } else {
                    $('#sib_sms_campaign').hide();
                }
                if (response.success) {
                    successPopUp(successAlert);
                } else {
                    failurePopUp(failAlert);
                }
            }
        });

        return false;
    });

    // Send Test Campaign
    $('#sms_campaign_test_number').keyup(function () {
        let str = $(this).val();
        str = str.replace(/[\D]/, '');
        $('#sms_campaign_test_number').val(str);
    });

    $('.sms_campaign_test_number').keydown(function (event) {
        if (event.keyCode === 32) {
            event.preventDefault();
        }
    });

    $(".sms_campaign_test_submit").click(function () {
        const successAlert = $(this).attr('successAlert');
        const failAlert = $(this).attr('failAlert');
        const senderAlert = $(this).attr('senderAlert');
        const numberAlert = $(this).attr('numberAlert');
        const messageAlert = $(this).attr('messageAlert');
        const sender = $('#sib_sms_campaign_sender').val();
        const message = $('#sib_sms_campaign_message').val();
        const number = $('#sms_campaign_test_number').val();

        if (number === '') {
            alert(numberAlert);
            $('.sms_campaign_test_number').focus();
            return false;
        } else if (sender === '') {
            alert(senderAlert);
            $('.sms_campaign_sender').focus();
            return false;
        } else if (message === '') {
            alert(messageAlert);
            $('.sms_campaign_message').focus();
            return false;
        } else {
            $.ajax({
                type: 'POST',
                dataType: 'JSON',
                cache: false,
                async: false,
                url: base_url,
                data: {
                    ajax: true,
                    sender: sender,
                    message: message,
                    number: number,
                    action: 'SmsTestCampaign',
                },
                success: function (response) {
                    if (response.success) {
                        successPopUp(successAlert);
                    } else {
                        failurePopUp(failAlert);
                    }
                }
            });
            return true;
        }
    });

    // Sendinblue SMS Campaign
    $('#sib_datetimepicker_date').datepicker({dateFormat: 'yy-mm-dd'});

    $('#sib_sms_campaign_sender').keyup(function () {
        let str = $(this).val();
        str = str.replace(/[^a-zA-Z 0-9]+/g, '');
        $('#sib_sms_campaign_sender').val(str);
        $('#sender_campaign_text').text((11 - str.length));
    });

    $('.sms_campaign_sender').keydown(function (event) {
        if (event.keyCode === 32) {
            event.preventDefault();
        }
    });

    $('#single_campaign_phone_number').keyup(function () {
        let str = $(this).val();
        str = str.replace(/[\D]/, '');
        $('#single_campaign_phone_number').val(str);
    });

    $('.sms_campaign_phone_number').keydown(function (event) {
        if (event.keyCode === 32) {
            event.preventDefault();
        }
    });

    $('#sib_sms_campaign_message').keyup(function () {
        let chars = this.value.length,
            messages = Math.ceil(chars / 160),
            remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
        if (remaining === 0) {
            remaining = 160;
        }
        $('#sib_sms_campaign_message_text').text(remaining);
        $('#sib_sms_campaign_message_text_count').text(messages);
    });

    const campaign_type = $('input:radio[name=Sendin_Sms_Choice]:checked').val();
    const phoneNumber = $('#sib_single_phone_number');
    const scheduleOptions = $('#sib_subscribed_campaign_option');
    switch (campaign_type) {
        case '0':
            phoneNumber.show();
            scheduleOptions.hide();
            break;
        case '1':
            phoneNumber.hide();
            scheduleOptions.show();
            break;
    }

    $('input:radio[name="Sendin_Sms_Choice"]').change(function (e) {
        let phoneNumber = $('#sib_single_phone_number');
        let scheduleOptions = $('#sib_subscribed_campaign_option');
        switch ($(this).val()) {
            case '0':
                phoneNumber.show();
                scheduleOptions.hide();
                break;
            case '1':
                phoneNumber.hide();
                scheduleOptions.show();
                break;
        }
        return false;
    });

    //Send Sendinblue SMS Campaign
    $(".sms_campaign_send").click(function () {
        const successAlert = $(this).attr('successAlert');
        const failAlert = $(this).attr('failAlert');
        const numberAlert = $(this).attr('numberAlert');
        const senderAlert = $(this).attr('senderAlert');
        const messageAlert = $(this).attr('messageAlert');
        const dateAlert = $(this).attr('dateAlert');
        const hourAlert = $(this).attr('hourAlert');
        const minuteAlert = $(this).attr('minuteAlert');
        const scheduleAlert = $(this).attr('scheduleAlert');
        const listAlert = $(this).attr('listAlert');
        const contactAlert = $(this).attr('contactAlert');
        const campaign_type = $('input:radio[name=Sendin_Sms_Choice]:checked').val();
        const sender = $('#sib_sms_campaign_sender').val();
        const message = $('#sib_sms_campaign_message').val();
        const number = $('#single_campaign_phone_number').val();
        const date = $('#sib_datetimepicker_date').val();
        const hour = $('#sib_datetimepicker_hour').val();
        const minute = $('#sib_datetimepicker_minute').val();

        if (campaignValidator(sender, message, number, date, hour, minute, campaign_type, senderAlert, numberAlert, messageAlert, dateAlert, hourAlert, minuteAlert)) {
            $.ajax({
                type: 'POST',
                dataType: 'JSON',
                cache: false,
                async: false,
                url: base_url,
                data: {
                    ajax: true,
                    sender: sender,
                    message: message,
                    number: number,
                    date: date,
                    hour: hour,
                    minute: minute,
                    campaign_type: campaign_type,
                    action: 'SendSmsCampaign',
                },
                success: function (response) {
                    if (response.success === "datetime_error") {
                        alert(scheduleAlert);
                    } else if (response.success === "list_error") {
                        alert(listAlert);
                    } else if (response.success === "contact_error") {
                        alert(contactAlert);
                    } else if (response.success === true) {
                        successPopUp(successAlert);
                    } else {
                        failurePopUp(failAlert);
                    }
                }
            });

            return true;
        }

        return false;
    });
    /*------ SMS Campaign Ends --------*/

/*------ Order Toggle --------*/

       $('input:radio[name="sib_sms_order_confirmation_toggle"]').change(function (e) {
        console.log(e.currentTarget.name);
        if ($(this).val() === '1') {
            $('#sib_sms_order_confirmation').show();
        } else {
            $('#sib_sms_order_confirmation').hide();
        }

        return false;
    });
//  shipment tab start
    $('input:radio[name="sib_sms_shipment_confirmation_toggle"]').change(function (e) {
        console.log(e.currentTarget.name);
        if ($(this).val() === '1') {
            $('#sib_sms_shipment_confirmation').show();
        } else {
            $('#sib_sms_shipment_confirmation').hide();
        }

        return false;
    });

//  shipment tab start

     $('#sender_order').keyup(function (e) {
        var str = $(this).val();
        str = str.replace(/[^a-zA-Z 0-9]+/g, '');
        $('#sender_order').val(str);
    });
    $('#sender_shipment').keyup(function (e) {
            var str = $(this).val();
            str = str.replace(/[^a-zA-Z 0-9]+/g, '');
            $('#sender_shipment').val(str);
    });

    var $sender_order = $('#sender_order');
    var $sender_order_val = $sender_order.val();
    if ($sender_order_val) {
        if (isInteger($sender_order_val) || $sender_order_val.length == 0) {
            $("#sender_order").attr('maxlength', '11');
            $('#sender_order_text').text((11 - $sender_order_val.length));
        }
        else {
            $("#sender_order").attr('maxlength', '11');
            $('#sender_order_text').text((11 - $sender_order_val.length));
        }
    }

    $("#sender_order").keydown(function (event) {
        if (event.keyCode == 32) {
        event.preventDefault();
    }
    });

    $('#sender_order_message').keyup(function() {
        var chars = this.value.length,
                messages = Math.ceil(chars / 160),
                remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
        if (remaining == 0)
        {
            remaining = 160.
        }
        $('#sender_order_message_text').text(remaining);
        $('#sender_order_message_text_count').text(messages);

    });

    if (typeof $('#sender_order_message').val() != 'undefined')
    {
        var chars = $('#sender_order_message').val().length,
        messages = Math.ceil(chars / 160),
        remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
        $('#sender_order_message_text').text(remaining);
        $('#sender_order_message_text_count').text(messages);
    }

    $('#sender_shipment').keyup(function() {
        var val = $(this).val();

        if (isInteger(val) || val.length == 0) {
            $("#sender_shipment").attr('maxlength', '11');
            $('#sender_shipment_text').text((11 - val.length));
        }
        else {
            $("#sender_shipment").attr('maxlength', '11');
            $('#sender_shipment_text').text((11 - val.length));
        }
    });

    $('#sender_shipment_message').keyup(function() {

        var chars = this.value.length,
                messages = Math.ceil(chars / 160),
                remaining = messages * 160 - (chars % (messages * 160) || messages * 160);
        if (remaining == 0)
        {
            remaining = 160.
        }
        $('#sender_shipment_message_text').text(remaining);
        $('#sender_shipment_message_text_count').text(messages);
    });

    if (typeof $('#sender_shipment_message').val() != 'undefined')
    {
        var chars = $('#sender_shipment_message').val().length,
                messages = Math.ceil(chars / 160),
                remaining = messages * 160 - (chars % (messages * 160) || messages * 160);

        $('#sender_shipment_message_text').text(remaining);
        $('#sender_shipment_message_text_count').text(messages);
    }

  /*------- Test Order ------*/
    $(document).on('click', '.testOrdersmssend', function () {
        var successmsg = $(this).attr('successmsg');
        var failmsg = $(this).attr('failmsg');
        var senderAlert = $(this).attr('senderAlert');
        var numberAlert = $(this).attr('numberAlert');
        var messageAlert = $(this).attr('messageAlert');

        var sender = $('#sender_order').val();
        var message = $('#sender_order_message').val();
        var number = $('#sib_order_confirmation_test_sms_number').val();

        if (sender === '') {
            alert(senderAlert);
            document.getElementById('sender_order').focus();
            return false;
        } else if (message === '') {
            alert(messageAlert);
            document.getElementById('sender_order_message').focus();
            return false;
        } else if (number === '') {
            alert(numberAlert);
            document.getElementById('sib_order_confirmation_test_sms_number').focus();
            return false;
        }

        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            cache: false,
            async: false,
            url: base_url,
            data: {
                ajax: true,
                Sender_Order: sender,
                Sender_Order_Message: message,
                order_number: number,
                action: 'SendOrderConfTestSms',
            },
            beforeSend: function () {
                $('#ajax-busy').show();
            },
            success: function (msg) {
                $('#ajax-busy').hide();

                if (msg.result === true) {
                    alert(successmsg);
                } else {
                    alert(failmsg);
                }
            }
        });
        return false;
    });
    /*------- Shipment setting save ------*/
    $(document).on('click', '.sender_shipment_save', function () {
        var senderfield = $(this).attr('senderfield');
        var messagefield = $(this).attr('messagefield');
        var successmsg = $(this).attr('successmsg');
        var failmsg = $(this).attr('failmsg');
        var sender = $('#sender_shipment').val();
        var message = $('#sender_shipment_message').val();
        var sms_ship_conf_toggle = $('input:radio[name=sib_sms_shipment_confirmation_toggle]:checked').val();
        if (sender === '') {
            alert(senderfield);
            document.getElementById('sender_shipment').focus();
            return false;
        } else if (message === '') {
            alert(messagefield);
            document.getElementById('sender_shipment_message').focus();
            return false;
        }
        $.ajax({
                type: 'POST',
                dataType: 'JSON',
                cache: false,
                async: false,
                url: base_url,
                data: {
                    ajax: true,
                    Sender_Shipment: sender,
                    Sender_Shipment_Message: message,
                    Api_Sms_Shipment_Status: sms_ship_conf_toggle,
                    action: 'SmsShipmentConfSettings',
                },
                beforeSend: function () {
                    $('#ajax-busy').show();
                },
                success: function (response) {
                    $('#ajax-busy').hide();
                    if (response.result === true) {
                        alert(successmsg);
                    } else {
                        alert(failmsg);
                    }
                }
            });
    });
    /*------- Shipment setting save function end ------*/
    /*------- Test shipment started ------*/
    $(document).on('click', '.testSmsShipped', function () {
        var successmsg = $(this).attr('successmsg');
        var failmsg = $(this).attr('failmsg');
        var senderAlert = $(this).attr('senderAlert');
        var numberAlert = $(this).attr('numberAlert');
        var messageAlert = $(this).attr('messageAlert');

        var sender = $('#sender_shipment').val();
        var message = $('#sender_shipment_message').val();
        var number = $('#sender_shipment_number').val();

        if (sender === '') {
            alert(senderAlert);
            document.getElementById('sender_shipment').focus();
            return false;
        } else if (message === '') {
            alert(messageAlert);
            document.getElementById('sender_shipment_message').focus();
            return false;
        } else if (number === '') {
            alert(numberAlert);
            document.getElementById('sender_shipment_number').focus();
            return false;
        }

        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            cache: false,
            async: false,
            url: base_url,
            data: {
                ajax: true,
                Sender_Shipment: sender,
                Sender_Shipment_Message: message,
                Shipment_Number: number,
                action: 'SendShipmentTestSms',
            },
            beforeSend: function () {
                $('#ajax-busy').show();
            },
            success: function (msg) {
                $('#ajax-busy').hide();

                if (msg.result === true) {
                    alert(successmsg);
                } else {
                    alert(failmsg);
                }
            }
        });
        return false;
    });

    $(document).on('click', '.sender_order_save', function () {
        var senderfield = $(this).attr('senderfield');
        var messagefield = $(this).attr('messagefield');
        var successmsg = $(this).attr('successmsg');
        var failmsg = $(this).attr('failmsg');
        var sms_order_conf_toggle = $('input:radio[name=sib_sms_order_confirmation_toggle]:checked').val();
        var sender = $('#sender_order').val();
        var message = $('#sender_order_message').val();
        if (sender === '') {
            alert(senderfield);
            document.getElementById('sender_order').focus();
            return false;
        } else if (message === '') {
            alert(messagefield);
            document.getElementById('sender_order_message').focus();
            return false;
        }
        $.ajax({
            type: 'POST',
            dataType: 'JSON',
            cache: false,
            async: false,
            url: base_url,
            data: {
                ajax: true,
                Sender_Order: sender,
                Sender_Order_Message: message,
                Api_Sms_Order_Status: sms_order_conf_toggle,
                action: 'SmsOrdConfSettings',
            },
            beforeSend: function () {
                $('#ajax-busy').show();
            },
            success: function (response) {
                $('#ajax-busy').hide();
                if (response.result === true) {
                    alert(successmsg);
                } else {
                    alert(failmsg);
                }
            }
        });
    });
// end function

    /*------ ALERT and Messages Starts --------*/
    function successPopUp(str) {
        alert(str);
    }

    function failurePopUp(str) {
        alert(str);
    }

    $('<div id="ajax-busy"/> loading..')
        .css(
            {
                opacity: 0.5,
                position: 'fixed',
                top: 0,
                left: 0,
                width: '100%',
                height: $(window).height() + 'px',
                background: 'white url(../modules/sendinblue/views/img/loader.gif) no-repeat center'
            }).hide().appendTo('body');

    $(document).on('mouseover mouseout', '.toolTip', function (e) {
        const title = $(this).attr('title');
        const offset = $(this).offset();

        if (e.type === 'mouseover') {
            $('body').append(
                '<div id="tipkk" style="top:'
                + offset.top
                + 'px; left:'
                + offset.left
                + 'px; ">' + title
                + '</div>');
            const tipContentHeight = $('#tipkk')
                .height() + 25;
            $('#tipkk').css(
                'top',
                (offset.top - tipContentHeight)
                + 'px');
        } else if (e.type === 'mouseout') {
            $('#tipkk').remove();
        }
    });

    /*------ ALERT and Messages Ends --------*/
});

/*------ SMS Tab Validation Starts --------*/
function isNormalInteger(str) {
    return /^[1-9]\d*$/.test(str);
}

function RegexEmail(email) {
    const emailRegexStr = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

    return emailRegexStr.test(email);
}

function smsSettingValidator(sms_credit, email_val, limit_val, current_val, emailAlert, limitAlert, creditAlert) {
    if (sms_credit === '1') {
        if (email_val === "" || RegexEmail(email_val) === false) {
            alert(emailAlert);
            $('.sib_notify_email').focus();
            return false;
        } else if (limit_val <= 0 || isNormalInteger(limit_val) === false) {
            alert(limitAlert);
            $('.sib_notify_value').focus();
            return false;
        } else if (parseInt(current_val) < limit_val) {
            alert(creditAlert);
            $('.sib_notify_value').focus();
            return false;
        } else {
            return true;
        }
    }

    return true;
}

function campaignValidator(sender, message, number, date, hour, minute, campaign_type, senderAlert, numberAlert, messageAlert, dateAlert, hourAlert, minuteAlert) {
    if (sender === '') {
        alert(senderAlert);
        $('.sms_campaign_sender').focus();
        return false;
    } else if (message === '') {
        alert(messageAlert);
        $('.sms_campaign_message').focus();
        return false;
    } else if (campaign_type === '0' && number === '') {
        alert(numberAlert);
        $('.sms_campaign_phone_number').focus();
        return false;
    } else if (campaign_type === '1') {
        if (date === '') {
            alert(dateAlert);
            $('.sib_datetimepicker_date').focus();
            return false;
        } else if (hour === '') {
            alert(hourAlert);
            $('.sib_datetimepicker_hour').focus();
            return false;
        } else if (minute === '') {
            alert(minuteAlert);
            $('.sib_datetimepicker_minute').focus();
            return false;
        } else {
            return true;
        }
    } else {
        return true;
    }
}

function isInteger(val) {
    var numberRegex = /^[+-]?\d+(\.\d+)?([eE][+-]?\d+)?$/;
    if (numberRegex.test(val)) {
        return true
    }
    return false;
}
/*------ SMS Tab Validation Ends --------*/