// Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
// for details on configuring this project to bundle and minify static web assets.

// Write your JavaScript code.
function getFormAsNestedObject(formSelector) {
    var formArray = $(formSelector).serializeArray();
    var result = {};

    formArray.forEach(function (item) {
        var keys = item.name.split('.');
        var value = item.value;
        var current = result;

        for (var i = 0; i < keys.length; i++) {
            var key = keys[i];

            // Ha utolsó kulcs, értéket rendelünk hozzá
            if (i === keys.length - 1) {
                current[key] = value;
            } else {
                // Ha a következő szint nincs meg, hozzuk létre
                if (!current[key]) {
                    current[key] = {};
                }
                current = current[key];
            }
        }
    });

    return result;
}

function showConfirmModal(options) {
    return new Promise(function (resolve) {
        // Alapértelmezett értékek
        var defaults = {
            title: 'Megerősítés',
            message: 'Biztos vagy benne?',
            okText: 'Igen',
            cancelText: 'Mégsem'
        };

        // Opciók összeolvasztása
        var settings = $.extend({}, defaults, options);

        // Beállítások betöltése a modalba
        $('#confirmModalLabel').text(settings.title);
        $('#confirmModalBody').html(settings.message);
        $('#confirmModalOkBtn').text(settings.okText);
        $('#confirmModalCancelBtn').text(settings.cancelText);

        // Események letisztítása
        $('#confirmModalOkBtn').off('click');
        $('#confirmModalCancelBtn').off('click');

        // OK gomb esemény
        $('#confirmModalOkBtn').on('click', function () {
            $('#confirmModal').modal('hide');
            resolve('ok');
        });

        // Cancel gomb esemény
        $('#confirmModalCancelBtn').on('click', function () {
            resolve('cancel');
        });

        // Modal megjelenítése
        var modal = new bootstrap.Modal(document.getElementById('confirmModal'), {
            backdrop: 'static',
            keyboard: false
        });
        modal.show();
    });
}
function showMessageModal(options) {
    // Alapértelmezett értékek
    var defaults = {
        title: 'Üzenet',
        message: 'Ez egy információs üzenet.',
        okText: 'OK'
    };

    var settings = $.extend({}, defaults, options);

    // Tartalom beállítása
    $('#messageModalLabel').text(settings.title);
    $('#messageModalBody').html(settings.message);
    $('#messageModalOkBtn').text(settings.okText);

    // Modal megnyitása
    var modal = new bootstrap.Modal(document.getElementById('messageModal'), {
        backdrop: 'static',
        keyboard: false
    });
    modal.show();
}

function renderActionButtons(rowId) {
    return `
        <button class="btn btn-primary edit-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-pencil-fill"></i>
        </button>
        <button class="btn btn-danger delete-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-trash-fill"></i>
        </button>
    `;
}
function renderActionButtonsforCheckListHeader(data, rowId) {
    if (data === 4) {
        return `
        <button class="btn btn-primary edit-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-pencil-fill"></i>
        </button>
        <button class="btn btn-secondary pdf-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-file-earmark-pdf-fill"></i>
        </button>`;
    }
    else {

        return `
        <button class="btn btn-primary edit-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-pencil-fill"></i>
        </button>
        <button class="btn btn-danger delete-btn btn-sm" data-id="${rowId}">
            <i class="bi bi-trash-fill"></i>
        </button>`;
    }
}

function renderCheckStatus(data) {
    //Open = 0,
    //InProgress = 1,
    //Blocked = 2,
    //Storno = 3,
    //Sent = 4,
    //Signed = 5,
    //Closed = 6
    switch (data) {
        case 0:
            return 'Nyitott';
            break;
        case 1:
            return 'Folyamatban';
            break;
        case 2:
            return 'Blokkolt';
            break;
        case 3:
            return 'Stornózva';
            break;
        case 4:
            return 'Beküldve';
            break;
        case 5:
            return 'Jóváhagyva';
            break;
        case 6:
            return 'Lezárt';
            break;
        default:
            return '';
            break;
    }
}
function renderCheckBox(data) {
    if (data === true) {
        return '<input type="checkbox" class="form-check-input no-click" checked>';
    }
    if (data === false) {
        return '<input type="checkbox" class="form-check-input no-click">';
    }
    return data;
}
function renderAnswerType(data) {
    if (data === 'SI-N') {
        return '<div class="text-center"><div class="box yellow-box">I</div><div class="box">N</div></div>';
    }
    if (data === 'I-SN') {
        return '<div class="text-center"><div class="box">I</div><div class="box yellow-box">N</div></div>';
    }
    if (data === 'PI-N') {
        return '<div class="text-center"><div class="box red-box">I</div><div class="box">N</div></div>';
    }
    if (data === 'I-PN') {
        return '<div class="text-center"><div class="box">I</div><div class="box red-box">N</div></div>';
    }
    if (data === 'P') {
        return '<div class="text-center"><i class="fas fa-camera fa-2x"></i></div>';
    }
    if (data === 'V') {
        return '<div class="text-center"><span class="border border-dark rounded p-1">0,00</span></div>';
    }
    return data;
}
function renderAnswerPhoto(data, row) {
    if (row.checkListTemplateRowDTO.answerType === 'P') {
        return `<div class="text-center"><img src="${data}" alt="Image" style="height: 100px; width: auto;" /></div>`;
    }
    if (row.checkListTemplateRowDTO.answerType === 'SI-N' && data === 'Igen') {
        return '<div class="text-center"><div class="box yellow-box">I</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'SI-N' && data === 'Nem') {
        return '<div class="text-center"><div class="box">N</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'I-SN' && data === 'Igen') {
        return '<div class="text-center"><div class="box">I</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'I-SN' && data === 'Nem') {
        return '<div class="text-center"><div class="box yellow-box">N</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'PI-N' && data === 'Igen') {
        return '<div class="text-center"><div class="box red-box">I</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'PI-N' && data === 'Nem') {
        return '<div class="text-center"><div class="box">N</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'I-PN' && data === 'Igen') {
        return '<div class="text-center"><div class="box">I</div></div>';
    }
    if (row.checkListTemplateRowDTO.answerType === 'I-PN' && data === 'Nem') {
        return '<div class="text-center"><div class="box red-box">N</div></div>';
    }
    return `<div class="text-center">${data}</div></div>`;
}

//Törlési funkció adatbázisnál
function deleteEntity(table, url, entityid) {
    showConfirmModal({
        title: 'Törlés megerősítése',
        message: 'Biztosan törölni szeretnéd ezt az elemet?',
        okText: 'Törlés',
        cancelText: 'Mégsem'
    }).then(function (result) {
        if (result === 'ok') {
            $.ajax({
                url: url,
                type: 'GET',
                data: { id: entityid },
                success: function (data) {
                    if (data) {
                        showMessageModal({
                            title: 'Információ',
                            message: 'A törlés sikerült!',
                            okText: 'Értettem'
                        });
                        table.ajax.reload();
                    } else {
                        showMessageModal({
                            title: 'Hiba!',
                            message: 'A törlés NEM sikerült!',
                            okText: 'Értettem'
                        });
                    }
                },
                error: function (xhr, status, error) {
                    showMessageModal({
                        title: 'Hiba!',
                        message: 'A törlés NEM sikerült!',
                        okText: 'Értettem'
                    });
                }
            });
        }
    });
}
function saveEntity(csrfToken, data, url) {
    $.ajax({
        url: url,
        type: 'POST',
        headers: {
            'X-CSRF-TOKEN': csrfToken,
            'Content-Type': 'application/json'
        },
        data: JSON.stringify(data),
        success: function (response) {
            if (response.success) {
                showMessageModal({
                    title: 'Figyelmem!',
                    message: 'Sikeres mentés.',
                    okText: 'Értettem'
                });
            }
            else {
                showMessageModal({
                    title: 'Figyelmem, HIBA!',
                    message: 'Sikertelen mentés.',
                    okText: 'Értettem'
                });
            }
        },
        error: function (xhr, status, error) {
            console.error("Hiba: ", error);
            showMessageModal({
                title: 'Hiba!',
                message: 'A mentés NEM sikerült!',
                okText: 'Értettem'
            });
        }
    });
}