function getPatternSectionName(company) {
    switch (company){
        case "farazsms": return "ارسال بر اساس پترن";
        case "smsdotir": return "لیست قالب‌ها";
    }
    return "ارسال با الگو";
}

function getAddPatternBtnName(company) {
    switch (company){
        case "farazsms": return "جدید";
        case "smsdotir": return "افزودن قالب";
    }
    return "افزودن جدید";
}

function getSmsTemplateByCompanyAndCode(company,code) {
    
    let message = "";
    switch (code){

        case "otp":
            message = "کاربر گرامی کد فعالسازی شما: %code% می‌باشد.\nنام اپلیکیشن یا وبسایت";
            break;
        case "successful_payment":
            message = "%user_name% عزیز، پرداخت شما به شناسه %purchase_id% با موفقیت انجام و ثبت شد.\nنام اپلیکیشن یا وبسایت";
            break;
        case "working_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت در حال انجام قرار گرفت.\nنام اپلیکیشن یا وبسایت";
            break;
        case "finished_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت تکمیل شده قرار گرفت.\nنام اپلیکیشن یا وبسایت";
            break;
        case "waiting_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت در انتظار پرداخت قرار گرفت و شما می‌توانید از بخش سفارشات نسبت به پرداخت و تکمیل سفارش خود اقدام کنید.\nنام اپلیکیشن یا وبسایت";
            break;
        case "refunded_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت مسترد شده قرار گرفت.\nنام اپلیکیشن یا وبسایت";
            break;
        case "checking_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت در حال بررسی می‌باشد.\nنام اپلیکیشن یا وبسایت";
            break;
        case "canceled_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% لغو شد.\nنام اپلیکیشن یا وبسایت";
            break;
        case "canceled_byuser_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% بنا به درخواست شما لغو شد.\nنام اپلیکیشن یا وبسایت";
            break;
        case "return_req_byuser_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% بنا به درخواست شما در وضعیت بررسی مرجوعی قرار گرفت.\nنام اپلیکیشن یا وبسایت";
            break;
        case "finished_post_tracking_order":
            message = "%user_name% عزیز، سفارش شما به شناسه %order_id% در وضعیت تکمیل شده قرار گرفت. کد رهگیری پستی، %post_tracking% می‌باشد.\nنام اپلیکیشن یا وبسایت";
            break;
    }

    let finalMessage = "";
    if(company == "smsdotir"){
        finalMessage = message.replace(/%/g, "#");
    }else{
        finalMessage = message;
    }

    return finalMessage;

}

const smsUserNotifsHelpBtn = function () {

    let sms_title = $(this).data('sms-title');
    let sms_type = $(this).data('sms-type');
    let provider_code = $('#active_provider_code').data('active-provider-code');
    let htmlHelp = '';

    htmlHelp = `
    <div class="new-gen-helper-sa2">

        <div class="nghs-header">راهنمای تکمیل الگو پیامک <span class="nhst">`+sms_title+`</span></div>
        <div class="nghs-title">
            1. کپی متن پیامک با متغییر
        </div>
        <span class="minitext">متن زیر برای ارسال پیامک `+sms_title+` نوشته شده است که می‌توانید آن‌را با توجه به نیاز خود تغییر دهید اما مقدار متغییر های موجود در متن را تغییر ندهید. از بخش زیر میتوانید متن را کپی نمایید:</span>
        <textarea disabled class="minitextareasms" rows="4">`+getSmsTemplateByCompanyAndCode(provider_code,sms_type)+`</textarea>
        <div class="nghs-imp-note">نکته مهم: در متن پیامک بالا مقدار متغییر های انگلیسی وارد شده و ترتیب آن‌ها را تغییر ندهید همچنین دقت کنید متغییر ها با حروف کوچک انگلیسی هستند و فقط شما متن‌های فارسی را با توجه به سلیقه و کسب و کار خود نیاز است تغییر دهید.</div>
        <div class="nghs-title">
            2. درج متن کپی شده در پنل پیامکی
        </div>
        <span class="minitext">وارد ناحیه کاربری پنل پیامکی خود شوید و وارد بخش `+getPatternSectionName(provider_code)+` شوید و بروی دکمه `+getAddPatternBtnName(provider_code)+` مطابق تصویر زیر کلیک نمایید و سپس متن کپی شده خود را در بخش قالب درج و قالب (الگو) خود را ذخیره نمایید.</span>
        <div class="nghsaiw"><img class="nghsa-img" src="`+mpPanelBaseUrl+`/core/_dist/img/sms_providers/sms_`+provider_code+`_pattern_def.jpg"></div>
        <div class="nghs-title">
            3. کپی کد مربوط به الگوی تعریف شده
        </div>
        <span class="minitext">مطابق تصویر راهنمای زیر کد الگو (قالب یا پترن) را از پنل شرکت پیامکی خود کپی کنید:</span>
        <div class="nghsaiw"><img class="nghsa-img" src="`+mpPanelBaseUrl+`/core/_dist/img/sms_providers/sms_`+provider_code+`_pattern_copy.jpg"></div>
        <div class="nghs-title">
            4. درج کد در پنل ماجوریس
        </div>
        <span class="minitext">کد کپی شده را در همین بخش اعلان به کاربران درج و ذخیره نمایید:</span>
        <div class="nghsaiw"><img class="nghsa-img" src="`+mpPanelBaseUrl+`/core/_dist/img/sms_providers/sms_`+provider_code+`_pattern_final_save.jpg"></div>

    </div>
    `;

    Swal.fire({
        html: htmlHelp,
        width: '800px',
        confirmButtonText: 'متوجه شدم',
        showClass: {
            popup: 'animated fadeInUp faster'
        },
        hideClass: {
            popup: 'animated fadeOutDown faster'
        },
        customClass: {
            htmlContainer: 'swal-scroll-wrapper'
        }
    });

};

function saveUserNotifsChanges(obj) {

    let card = obj.parent().parent().parent().parent();
    card.addClass("collapsed-card");
    card.find('.all_json_user_notifs_edit_btn').show();

    let card_body = obj.parent().parent().parent();
    card_body.slideUp();

    let pattern = $.trim(card_body.find('.js_pattern_txt').val());
    let active  = parseInt(card_body.find('.js_active').val());

    let id = $(card.find('.json_user_notifs_id')).html();

    let main_json_text = $('#user_notifs').val();
    if (main_json_text == '') {
        mainJsonUserNotifsArrayObj = [];
    } else {
        mainJsonUserNotifsArrayObj = JSON.parse(main_json_text);
    }

    let index = -1;
    for (let i = 0; i < mainJsonUserNotifsArrayObj.length; i++) {
        if (mainJsonUserNotifsArrayObj[i]['id'] == id) {
            index = i;
            break;
        }
    }

    if (index >= 0) {

        if(mainJsonUserNotifsArrayObj[index]['code'] == "otp"){
            active = 1;
            let showactive = card.find('.json_user_notifs_showactive');
            showactive.removeClass('user-notifs-deactive');
            showactive.addClass('user-notifs-active');
            showactive.html('فعال');
        }else{
            if(mainJsonUserNotifsArrayObj[index]['active'] != active){
                let showactive = card.find('.json_user_notifs_showactive');
                if (active == 1) {
                    showactive.removeClass('user-notifs-deactive');
                    showactive.addClass('user-notifs-active');
                    showactive.html('فعال');
                } else {
                    showactive.removeClass('user-notifs-active');
                    showactive.addClass('user-notifs-deactive');
                    showactive.html('غیرفعال');
                }
            }
        }

        

        mainJsonUserNotifsArrayObj[index]['pattern'] = pattern;
        mainJsonUserNotifsArrayObj[index]['active']  = active;

        $('#user_notifs').val(JSON.stringify(mainJsonUserNotifsArrayObj));
        
    }
}
function jsonUserNotifsArraySubmitBtn() {
    saveUserNotifsChanges($(this));
}


let editJsonUserNotifsRowsBtn = function () {

    let root_card = $(this).parent().parent().parent();
    root_card.find('.card-body').show('slideDown');
    $(this).hide();

};

const jsonUserNotifsCancelBtn = function () {

    let card = $(this).closest('.json_user_notifs_card');
    card.find('.all_json_user_notifs_edit_btn').show();
    card.addClass("collapsed-card");
    let card_body = card.find('.card-body');
    card_body.slideUp();

};

function jsonUserNotifsRowHtmlMacker(json) { //dont use ids because ids cant be repeated in DOM
    let htmlRow = "";

    htmlRow += '<div class="json_user_notifs_card card card-outline card-json-item collapsed-card global-json-handler-card">';
    htmlRow += '<div class="card-header json_user_notifs_box">';
    htmlRow += '<div class="info-container">';
    htmlRow += '<span class="json_user_notifs_id" >' + (json != null ? json['id'] : "") + '</span>';
    htmlRow += '<span class="json_user_notifs_showtitle" >' + (json != null ? json['title'] : "-") + '</span>';
    htmlRow += '<span class="json_user_notifs_showtype" >' + (json != null ? json['type'] : "-") + '</span>';
    if(json != null)
        htmlRow += (json['active'] ? '<span class="json_user_notifs_showactive user-notifs-active" >فعال</span>' : '<span class="json_user_notifs_showactive user-notifs-deactive" >غیرفعال</span>');
    htmlRow += '</div>';
    htmlRow += '<div class="card-tools2">';
    htmlRow += '<button type="button" class="all_json_user_notifs_edit_btn btn edit-small-btn2 btn-primary btn-sm"><i class="ph ph-pencil"></i></button>';
    htmlRow += '</div>';
    htmlRow += '</div>';
    htmlRow += '<div class="card-body" style="display: none;">';
    htmlRow += '<div style="display: none;" class="static-user-notifs-params bottom20">';
    htmlRow += '<span>شناسه: '+(json != null ? json['id'] : "")+'</span><br>';
    htmlRow += '<span>کد : '+(json != null ? json['type'] : "")+'</span><br>';
    htmlRow += '<span>عنوان: '+(json != null ? json['title'] : "")+'</span>';
    htmlRow += '</div>';

    htmlRow += '<div class="dynamic-user-notifs-params">';

    htmlRow += '<div class="sms-help-btn-wrapper"><button class="btn btn-sm btn-warning btn-sun-help" data-sms-title="'+json['title']+'" data-sms-type="'+json['type']+'">راهنمای این بخش</button></div>';

    if(json['type']!='otp'){
        let options = {
            0: "غیرفعال",
            1: "فعال"
        }
        htmlRow += rowOptionsInputHtmlGenerator(json['active'],options,"js_active","وضعیت این قالب (پترن)");
    }else{
        let options = {
            0: "غیرفعال",
            1: "فعال"
        }
        htmlRow += '<div style="display:none">';
        htmlRow += rowOptionsInputHtmlGenerator(1,options,"js_active","وضعیت این قالب (پترن)");
        htmlRow += '</div>';
    }

    let pattern_text = (json != null) ? json['pattern'] : "";
    htmlRow += textInputHtmlGenerator(pattern_text,'js_pattern_txt',"شناسه قالب (الگو یا پترن آیدی)","ltr");
  
    htmlRow += '<div class="local_submit_parent">';
    htmlRow += '<span class="json_user_notifs_submit_array btn btn-primary btn-sm">ثبت تغییرات</span>';
    htmlRow += '<span class="json_user_notifs_cancel btn btn-gray btn-sm">انصراف</span>';
    htmlRow += '</div>';
    htmlRow += '</div>';
    htmlRow += '</div>';

    return htmlRow;

}




$(function () { // start of document ready:
    //json user notifs ARRAY

    $('.json_user_notifs_cancel').click(jsonUserNotifsCancelBtn);

    if ($(".json_handler_user_notifs_array")[0]) { //there is json type 1 array list:

        const jsonString = $.trim($('.json_handler_user_notifs_array > textarea').val());
        let jsonUserNotifsArrayObj;

        if (jsonString == '') {
            jsonUserNotifsArrayObj = [];
        } else {
            jsonUserNotifsArrayObj = JSON.parse(jsonString);
        }

        if (jsonUserNotifsArrayObj.length == 0) {
            const htmlrow = ThereIsNoRowHereHtml();
            $(".json_handler_user_notifs_array").find(".showbox").find("#sorable_list").html(htmlrow);
        } else {
            $.each(jsonUserNotifsArrayObj, function (key, value) {
                const htmlrow = jsonUserNotifsRowHtmlMacker(value);
                $(".json_handler_user_notifs_array").find(".showbox").find("#sorable_list").append(htmlrow);
            });
        }

        $('.all_json_user_notifs_edit_btn').click(editJsonUserNotifsRowsBtn);
        $('.json_user_notifs_submit_array').off("click");
        $('.row-options-wrapper > .row-option').click(SelectRowOptionsChanged);
        // //https://stackoverflow.com/a/9467172/4565796
        $('.json_user_notifs_submit_array').click(jsonUserNotifsArraySubmitBtn);
        $('.json_user_notifs_cancel').click(jsonUserNotifsCancelBtn);
        $('.btn-sun-help').click(smsUserNotifsHelpBtn);

    }

    $('#user_notifs_save').click(function () {

        let sendData = {
            user_notifs: $.trim($('#user_notifs').val())
        }

        Swal.fire({
            title: 'از ذخیره اعلان به کاربران مطمئن هستید؟',
            text: '',
            icon: '',
            showCancelButton: true,
            confirmButtonColor: '#007bff',
            cancelButtonColor: '#909090',
            confirmButtonText: 'بله',
            cancelButtonText: 'انصراف'
        }).then((result) => {
            if (result.isConfirmed) {

                let loadingOverlay = $(this).parent().parent().find('#over_loading');
                loadingOverlay.show();
        
                $.ajax({
        
                    type: "POST",
                    url: mpPanelBaseUrl + "/update-user-notifs",
                    data: sendData,
                    timeout: 25000,
                    cache: false,
                    success: function (data) {
        
                        loadingOverlay.hide();
        
                        if (data == "ok") {
                            notyf.success('اعلان به کاربران به روز گردید.');
                        } else {
                            notyf.error('مشکلی در به روزرسانی اعلان به کاربران رخ داده است. لظفا صفحه را مجدد رفرش نمایید.');
                        }
        
                    },
                    error: function (xhr, status, error) {
                        loadingOverlay.hide();
                        notyf.error('مشکلی در به روزرسانی اعلان به کاربران رخ داده است. لظفا صفحه را مجدد رفرش نمایید.');
                        notyf.error('Error: ' + xhr.status + ' ' + xhr.statusText);
                    }
        
                });

            }
        })
    });
    
}); //end of jqury doc ready
///////////////////////////////////////////////
