var DashData = SuperWidget.extend({

    init: function () {
        var self = this;

        window.addEventListener("dashboardFiltro", function (e) {
            self.carregar(e.detail || {});
        });

        this.carregar({});
    },

    carregar: function (filtros) {
        $.ajax({
            url: "/api/public/ecm/dataset/search",
            type: "POST",
            contentType: "application/json",
            data: JSON.stringify({
                datasetId: "ds_dashboard_checklist"
            }),
            success: function (res) {
                var dados = (res.content || []).filter(function (item) {
                    var st = normalizaTexto(item.saidaAnalise || item.status || "");
                    return st === "CONFORME" || st === "NAO_CONFORME";
                });

                dados = dados.filter(function (item) {
                    if (!matchMulti(item.ciclo, filtros.ciclo)) {
                        return false;
                    }
                    if (!matchMulti(item.regional, filtros.regional)) {
                        return false;
                    }
                    if (filtros.loja && normalizaTexto(item.loja).indexOf(normalizaTexto(filtros.loja)) === -1) {
                        return false;
                    }

                    if (filtros.dataInicio || filtros.dataFim) {
                        var dataAuditoria = normalizaData(item.dataAuditoria);
                        var dataLimite = normalizaData(item.dataLimite);
                        var inicio = normalizaData(filtros.dataInicio);
                        var fim = normalizaData(filtros.dataFim);
                        return dataNaFaixa(dataAuditoria, inicio, fim) || dataNaFaixa(dataLimite, inicio, fim);
                    }

                    return true;
                });

                dados.sort(function (a, b) {
                    var da = normalizaData(a.dataAuditoria);
                    var db = normalizaData(b.dataAuditoria);
                    if (da < db) return 1;
                    if (da > db) return -1;
                    return 0;
                });

                window.dispatchEvent(new CustomEvent("dashboardData", { detail: dados }));
            },
            error: function () {
                window.dispatchEvent(new CustomEvent("dashboardData", { detail: [] }));
            }
        });
    }

});

function normalizaTexto(valor) {
    return String(valor || "").trim().toUpperCase();
}

function normalizaData(valor) {
    return String(valor || "").trim();
}

function dataNaFaixa(data, inicio, fim) {
    if (!data) return false;
    if (inicio && data < inicio) return false;
    if (fim && data > fim) return false;
    return true;
}

function matchMulti(valorAtual, selecionados) {
    if (!selecionados || !selecionados.length) {
        return true;
    }

    var atual = normalizaTexto(valorAtual);
    for (var i = 0; i < selecionados.length; i++) {
        if (atual === normalizaTexto(selecionados[i])) {
            return true;
        }
    }
    return false;
}
