var DashData = SuperWidget.extend({

    init:function(){

        console.log("DashData carregado");

        var self=this;

        window.addEventListener("dashboardFiltro",function(e){

            console.log("DashData recebeu filtros:",e.detail);

            self.carregar(e.detail);

        });

    },

    carregar:function(filtros){

        console.log("Consultando dataset...", filtros);

        var self=this;

        $.ajax({

            url:"/api/public/ecm/dataset/search",
            type:"POST",
            contentType:"application/json",

            data:JSON.stringify({
                datasetId:"ds_dashboard_checklist"
            }),

            success:function(res){

                console.log("Resposta dataset:",res);

                var dados=res.content || [];

                console.log("Quantidade registros:", dados.length);

                // FILTRO POR LOJA
                if(filtros.loja){

                    dados = dados.filter(function(item){

                        return normalizaTexto(item.loja) === normalizaTexto(filtros.loja);

                    });

                }

                // FILTRO POR DATA
                if(filtros.dataInicio || filtros.dataFim){

                    dados = dados.filter(function(item){

                        var dataInicioAuditoria = normalizaData(item.dataAuditoria);
                        var dataLimite = normalizaData(item.dataLimite);
                        var inicioFiltro = normalizaData(filtros.dataInicio);
                        var fimFiltro = normalizaData(filtros.dataFim);

                        // Mantem quando data de auditoria OU data limite estiver na faixa filtrada
                        return dataNaFaixa(dataInicioAuditoria, inicioFiltro, fimFiltro) ||
                               dataNaFaixa(dataLimite, inicioFiltro, fimFiltro);

                    });

                }

                // Mantem somente auditorias com status final (evita divergencia entre total e KPIs)
                var antesStatus = dados.length;
                dados = dados.filter(function(item){
                    var st = normalizaTexto(item.saidaAnalise || item.status || "");
                    return st === "CONFORME" || st === "NAO_CONFORME";
                });
                console.log("Registros com status final:", dados.length, "de", antesStatus);

                // Ordena por data de auditoria mais recente
                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;
                });

                console.log("Registros filtrados:", dados);

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

            }

        });

    }

});

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

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

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