permission($radice) || (!empty($_POST["modulo"]) && $_SESSION["utente"]->permission($_POST["modulo"])))) { if (isset($_POST["draw"])) { $filters = []; if (!empty($_POST["filters"])) { parse_str(str_replace("&","&",$_POST["filters"]), $filters); } $timing = [[date("Y-m-d H:i:s.u"),"Start"]]; $oeManager = new oeManager; $oeManager->countInviti = true; $oeManager->setFilters($filters); if (!empty($_POST["search"]["value"])) { $oeManager->generalFilter = $_POST["search"]["value"]; } $timing[] = [date("Y-m-d H:i:s.u"),"Init filters"]; $premialita = (settingsManager::getValue("premialitaOEVR-positivo") == "S"); $soglia = settingsManager::getValue("premialitaOEVR-soglia"); $timing[] = [date("Y-m-d H:i:s.u"),"Init settings"]; if (isset($_SESSION["exportoperatoriSettings"][$_POST["token"]]) && $_SESSION["exportoperatoriSearch"][$_POST["token"]] == $oeManager->generalFilter && json_encode($_SESSION["exportoperatoriSettings"][$_POST["token"]]) === json_encode($filters)) { $timing[] = [date("Y-m-d H:i:s.u"),"Get from search session"]; if (isset($_SESSION["exportoperatori"][$_POST["token"]])) { $operatori = $_SESSION["exportoperatori"][$_POST["token"]]; $relazioni = array_column($operatori,"codice"); $timing[] = [date("Y-m-d H:i:s.u"),"Get from clean session"]; } else { $relazioni = json_decode(gzuncompress($_SESSION["exportoperatoriRelazioni"][$_POST["token"]]),true); $timing[] = [date("Y-m-d H:i:s.u"),"Get from compressed session"]; } } else { $relazioni = $oeManager->getOERelations($_SESSION["ente"]->codice,$filters["logicOperator"] ?? "OR"); $timing[] = [date("Y-m-d H:i:s.u"),"New query"]; } $return = array(); $return["draw"] = (int)$_POST["draw"]; $return["recordsTotal"] = (int)0; $return["recordsFiltered"] = (int)0; $bind = []; if (!empty($relazioni)) { $oeAlbi = []; $timing[] = [date("Y-m-d H:i:s.u"),"Begin elaboration"]; if ($pdo->go("SHOW TABLES LIKE 'r_partecipanti_albo'")->rowCount() > 0) { $oeAlbi = $pdo->go("SELECT r_partecipanti_albo.codice_operatore FROM r_partecipanti_albo JOIN b_bandi_albo ON r_partecipanti_albo.codice_elenco = b_bandi_albo.codice WHERE conferma = 'S' AND ammesso = 'S' AND b_bandi_albo.tipologia <> 'I'")->fetchAll(PDO::FETCH_COLUMN); if (!empty($oeAlbi)) { $oeAlbi = array_unique($oeAlbi); } else { $oeAlbi = []; } } $timing[] = [date("Y-m-d H:i:s.u"),"OE List transacted"]; $return["recordsTotal"] = (int)count($relazioni); if (empty($operatori)) { $operatori = oeManager::getOE(array_keys($relazioni)); $timing[] = [date("Y-m-d H:i:s.u"),"Begin adding OE Info"]; if (!empty($operatori)) { foreach($operatori AS $index => $oe) { $oe["timestamp_iscrizione"] = $relazioni[$index]["timestamp"]; $oe["feedback"] = $relazioni[$index]["feedback"]; $oe["id_interno"] = $relazioni[$index]["id_interno"]; $oe["inviti"] = $relazioni[$index]["inviti"] ?? "n.a."; $oe["invitiSolari"] = $relazioni[$index]["invitiSolari"] ?? "n.a."; $oe["albi"] = (in_array($oe["codice"],$oeAlbi)); $operatori[$index] = $oe; } } $timing[] = [date("Y-m-d H:i:s.u"),"End adding OE Info"]; } if (!empty($operatori)) { $order = "ragione_sociale"; switch($_POST["order"][0]["column"]) { case "0": $order = "codice"; break; case "2": $order = "codice_fiscale_impresa"; break; case "3": $order = "partita_iva"; break; case "4": $order = "ragione_sociale"; break; case "6": $order = "timestamp_iscrizione"; break; case "7": $order = "inviti"; break; case "8": $order = "invitiSolari"; break; case "9": $order = "albi"; break; case "10": $order = "feedback"; break; } if ($_POST["order"][0]["dir"] == "desc") { usort($operatori, function($a, $b) { global $order; return $b[$order] > $a[$order]; }); } else { usort($operatori, function($a, $b) { global $order; return $a[$order] > $b[$order]; }); } $timing[] = [date("Y-m-d H:i:s.u"),"Data sorted"]; $return["recordsFiltered"] = count($operatori); $_SESSION["exportoperatoriSearch"][$_POST["token"]] = $oeManager->generalFilter; $_SESSION["exportoperatoriSettings"][$_POST["token"]] = $filters; if (count($operatori) < 5000) { $_SESSION["exportoperatori"][$_POST["token"]] = $operatori; } else { $_SESSION["exportoperatoriRelazioni"][$_POST["token"]] = gzcompress(json_encode($relazioni)); } $timing[] = [date("Y-m-d H:i:s.u"),"Session stored"]; session_write_close(); $operatori = array_slice($operatori,(int)$_POST["start"],(int)$_POST["length"]); $timing[] = [date("Y-m-d H:i:s.u"),"Data sliced"]; $punteggioMassimo = settingsManager::getValue("punteggioMassimoVR"); $acceptedCallbacks = ["invitaOperatore"]; if (!empty($operatori)) { $return["data"] = array(); $timing[] = [date("Y-m-d H:i:s.u"),"Begin - OE Checks verify"]; $verificaArt80 = $oeManager->checkVerificaOE(array_column($operatori, "codice_fiscale_impresa")); $timing[] = [date("Y-m-d H:i:s.u"),"End - OE Checks verify"]; foreach($operatori AS $operatore) { $row = array(); $row[0] = $operatore["codice"]; $row[1] = '
'; if(! empty($verificaArt80[$operatore["codice_fiscale_impresa"]])) { $row[1] = '
'; } $row[2] = $operatore["codice_fiscale_impresa"]; $row[3] = $operatore["partita_iva"]; $row[4] = "{$operatore["ragione_sociale"]}" . (($operatore["attivo"] == "S") ? "" : "
".__("Utenza non attiva")."") ; $row[5] = ($operatore["tipo"] == "IMP") ? __("Impresa") : __("Professionista"); $row[6] = mysql2datetime($operatore["timestamp_iscrizione"]); $row[7] = $operatore["inviti"] ?? "n.a."; $row[8] = $operatore["invitiSolari"] ?? "n.a."; $row[9] = ($operatore["albi"] == 1) ? "" : ""; if (!empty($operatore["feedback"])) { $color = make_color($operatore["feedback"]/$punteggioMassimo,0,1); ob_start(); ?>
= $soglia) { $checkPremialita = vendorRating::getPremialita($operatore["codice"],null); if (!empty($checkPremialita)) { ?>
"; if (empty($_POST["callBackAction"])) { $row[12] = ""; } else { if (in_array($_POST["callBackAction"],$acceptedCallbacks,true)!==false) { $selected = false; if (isset($_POST["callBackSelected"])) { $callBackSelected = json_decode($_POST["callBackSelected"],true); if (!empty($callBackSelected) && (in_array($operatore["codice"],$callBackSelected) !== false)) { $selected = true; } } $callBackbuttons = ""; $row[12] = $callBackbuttons; } else { $row[12] = "n/a"; } } $return["data"][] = $row; } $timing[] = [date("Y-m-d H:i:s.u"),"End data preparation"]; } else { $return["data"] = array(); } } else { $return["data"] = array(); } } else { $return["data"] = array(); } $return["timing"] = $timing; unset($oeManager); unset($relazioni); unset($operatori); echo json_encode($return); } } ?>