const smsProvidersHelpBtn = function () {

    let provider_code = $(this).data('sms-p-code');

    let htmlHelp = '';

    if(provider_code == "farazsms"){

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

            <div class="nghs-header">راهنمای تکمیل اطلاعات (اتصال به پنل پیامکی فراز اس‌ام‌اس)</div>
            <div class="nghs-title">
                سرشماره
            </div>
            <div class="minitext">
                این مقدار، شماره خط ارسال کننده پیامک می باشد و باید برابر با خط خدماتی 3000505 قرار داده شود اما ممکن است برای برخی کاربران متفاوت باشد.
                توصیه می‌شود در پنل پیامکی خود در فراز اس‌ام‌اس حتما با ثبت تیکت از مقدار شماره خط ارسال کننده مطمئن شوید.
            </div>
            <div class="nghs-title">
                کلید دسترسی (API Key)
            </div>
            <div class="minitext">
                برای ثبت کلید دسترسی فراز اس‌ام‌اس از پنل این خدمات‌دهنده و مانند تصویر راهنمای زیر وارد قسمت خدمات وب سرویس > لیست کلیدهای دسترسی کلید جدید ایجاد و پس از فعالسازی استفاده نمایید:
            </div>
            <div class="nghsaiw"><img class="nghsa-img" src="`+mpPanelBaseUrl+`/core/_dist/img/sms_providers/sms_farazsms_apikey.png"></div>

        </div>
        `;

    }else if(provider_code == "smsdotir"){

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

            <div class="nghs-header">راهنمای تکمیل اطلاعات (اتصال به پنل پیامکی SMS.ir)</div>
            <div class="nghs-title">
                کلید دسترسی (API Key)
            </div>
            <div class="minitext">
                برای ثبت کلید دسترسی در SMS.ir از پنل این خدمات‌دهنده و قسمت برنامه‌نویسان > لیست کلیدهای API کلید جدید ایجاد و پس از فعالسازی استفاده نمایید.
            </div>
            <div class="nghsaiw"><img class="nghsa-img" src="`+mpPanelBaseUrl+`/core/_dist/img/sms_providers/sms_smsdotir_apikey.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 saveProviderChanges(obj) {

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

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

    let line_number      = $.trim(card_body.find('.js_line_number_txt').val());
    let username         = "";
    let password         = "";
    let api_key_or_token = $.trim(card_body.find('.js_api_key_or_token_txt').val());
    let api_secret_key   = $.trim(card_body.find('.js_api_secret_key_txt').val());
    let api_url_address  = "";
    let active           = parseInt(card_body.find('.js_active').val());

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

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

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

    if (index >= 0) {

        mainJsonProviderArrayObj[index]['line_number']      = line_number;
        mainJsonProviderArrayObj[index]['username']       = username;
        mainJsonProviderArrayObj[index]['password']       = password;
        mainJsonProviderArrayObj[index]['api_key_or_token']       = api_key_or_token;
        mainJsonProviderArrayObj[index]['api_secret_key'] = api_secret_key;
        mainJsonProviderArrayObj[index]['api_url_address']       = api_url_address;
        

        if (active == 1) {
            mainJsonProviderArrayObj.forEach(element => {
                element['active'] = 0;
            });
            mainJsonProviderArrayObj[index]['active'] = active;

            let info_container = card.find('.info-container');
            $('.json_provider_showactive').remove();
            $('.js_active').val("0");
            card.find('.js_active').val("1");

            let x = document.createElement("span");
            x.setAttribute("class", "json_provider_showactive");
            x.append("انتخاب شده");
            info_container[0].appendChild(x);
        }

        $('#sms_providers').val(JSON.stringify(mainJsonProviderArrayObj));
        
    }
}
function jsonProviderArraySubmitBtn() {
    saveProviderChanges($(this));
}


let editJsonProviderRowsBtn = function () {

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

};

const jsonProviderCancelBtn = function () {

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

};


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

    htmlRow += '<div class="json_provider_card card card-outline card-json-item collapsed-card global-json-handler-card">';
    htmlRow += '<div class="card-header json_provider_box">';
    htmlRow += '<div class="info-container">';
    htmlRow += '<span style="display:none" class="json_provider_id" >' + (json != null ? json['id'] : "") + '</span>';
    htmlRow += '<span style="display:none" class="json_provider_showcode" >' + (json != null ? json['code'] : "-") + '</span>';
    htmlRow += '<img class="json_provider_logo" src="'+mpPanelBaseUrl+'/core/_dist/img/sms_providers/'+json['code']+'.png"/>';
    htmlRow += '<span class="json_provider_showtitle" >' + (json != null ? json['title'] : "-") + '</span>';
    htmlRow += (json != null && json['active'] ? '<span class="json_provider_showactive" >انتخاب شده</span>' : "");
    htmlRow += '</div>';
    htmlRow += '<div class="card-tools2">';
    htmlRow += '<button type="button" class="all_json_provider_edit_btn edit-small-btn2 btn 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 class="static-provider-params">';
    //htmlRow += '<span>شناسه: '+(json != null ? json['id'] : "")+'</span><br>';
    htmlRow += '<div style="display:none"><span>کد خدمات‌دهنده: '+(json != null ? json['code'] : "")+'</span><br>';
    htmlRow += '<span>برند خدمات‌دهنده: '+(json != null ? json['title'] : "")+'</span></div>';
    htmlRow += '</div>';

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

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

    let options = {
        0: "عدم انتخاب",
        1: "انتخاب شده"
    }
    htmlRow += rowOptionsInputHtmlGenerator(json['active'],options,"js_active","وضعیت خدمات‌دهنده ارسال پیامک");
    
    if(json['code'] == "farazsms"){
        let line_number = (json != null) ? json['line_number'] : "";
        htmlRow += textInputHtmlGenerator(line_number,'js_line_number_txt',"سرشماره","ltr");
        let api_key_or_token = (json != null) ? json['api_key_or_token'] : "";
        htmlRow += textInputHtmlGenerator(api_key_or_token,'js_api_key_or_token_txt',"کلید دسترسی (API Key)","ltr");
    }else if(json['code'] == "smsdotir"){
        let api_secret = (json != null) ? json['api_secret_key'] : "";
        htmlRow += textInputHtmlGenerator(api_secret,'js_api_secret_key_txt',"کلید دسترسی (API Key)","ltr");
    }

    htmlRow += '<div class="local_submit_parent">';
    htmlRow += '<span class="json_provider_submit_array btn btn-primary btn-sm">ثبت تغییرات</span>';
    htmlRow += '<span class="json_provider_cancel btn btn-gray btn-sm">انصراف</span>';
    htmlRow += '</div>';
    htmlRow += '</div>';
    htmlRow += '</div>';

    return htmlRow;

}




$(function () { // start of document ready:
    //json sms provider ARRAY
    $('.json_provider_cancel').click(jsonProviderCancelBtn);

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

        const jsonString = $.trim($('.json_handler_provider_array > textarea').val());
        let jsonProviderArrayObj;

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

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

        $('.all_json_provider_edit_btn').click(editJsonProviderRowsBtn);
        $('.json_provider_submit_array').off("click");
        $('.row-options-wrapper > .row-option').click(SelectRowOptionsChanged);
        // //https://stackoverflow.com/a/9467172/4565796
        $('.json_provider_submit_array').click(jsonProviderArraySubmitBtn);
        $('.json_provider_cancel').click(jsonProviderCancelBtn);
        $('.btn-sp-help').click(smsProvidersHelpBtn);

    }

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

        let sendData = {
            sms_providers: $.trim($('#sms_providers').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-sms-providers",
                    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
///////////////////////////////////////////////
