function get(url, callback) {
    get(url, callback, "Si è verificato un errore durante l'elaborazione della richiesta.");
}

function get(url, callback, errorMessage) {
    $.ajax({
        url: url,
        type: "GET",
        contentType: "application/json",
        beforeSend: function (data) {
            $("#ajaxLoaderBg").show();
        },
        success: function (data) {
            callback(data);
        },
        error: function (data) {
            swalErrorMsg(errorMessage);
        },
        complete: function (data) {
            $("#ajaxLoaderBg").hide();
        }
    });
}

function post(url, data, callback) {
    $.ajax({
        url: url,
        data: JSON.stringify(data),
        type: "POST",
        contentType: "application/json",
        beforeSend: function (data) {
            $("#ajaxLoaderBg").show();
        },
        success: function (data) {
            callback(data);
        },
        error: function (data) {
            swalErrorMsg("Si è verificato un errore durante l'elaborazione della richiesta.");
        },
        complete: function (data) {
            $("#ajaxLoaderBg").hide();
        }
    });
}

function postF(url, data, callback) {
    $.ajax({
        url: url,
        data: data,
        type: "POST",
        processData: false,
        contentType: false,
        beforeSend: function (data) {
            $("#ajaxLoaderBg").show();
        },
        success: function (data) {
            callback(data);
        },
        error: function (data) {
            swalErrorMsg("Si è verificato un errore durante l'elaborazione della richiesta.");
        },
        complete: function (data) {
            $("#ajaxLoaderBg").hide();
        }
    });
}

function postFile(url, data, callback) {

    let formData = new FormData();

    for (let key in data) {
        if (data.hasOwnProperty(key)) {
            if (data[key] instanceof File) {

                formData.append(key, data[key]);
            } else {

                formData.append(key, data[key]);
            }
        }
    }

    $.ajax({
        url: url,
        type: "POST",
        data: formData,
        processData: false,
        contentType: false,
        beforeSend: function () {
            $("#ajaxLoaderBg").show();
        },
        success: function (response) {
            callback(response);
        },
        error: function () {
            swalErrorMsg("Si è verificato un errore durante l'elaborazione della richiesta.");
        },
        complete: function () {
            $("#ajaxLoaderBg").hide();
        }
    });
}

function replaceOptions(selectId, list, value, displayText) {
    var select = $('#' + selectId);
    select.find('option').remove().end();
    select.append('<option value="">--Seleziona</option>');
    $.each(list, function (i, c) {
        select.append('<option value="' + c[value] + '">' + c[displayText] + '</option>');
    });
}

function refreshDataGrid(id) {
    var gridInstance = DevExpress.ui.dxDataGrid.getInstance(document.getElementById(id));
    if (gridInstance != null) {
        gridInstance.refresh();
    }
    return;
}

function showOrHidePanel(id, val){
    if (val){
        $('#' + id).show();
    }else{
        $('#' + id).hide();
    }
}

function clickIfNotNull(id, prop){
    if (prop != null && typeof prop != 'undefined') {
        $('#' + id).click();
    }
}

function swalErrorMsg(msg) {
    Swal.fire({
        title: 'Errore',
        text: msg,
        icon: 'error',
        confirmButtonColor: '#3085d6',
        content: {
            element: "div", attributes: { innerHTML: msg },
        },
    });

    return;
}