codice; $bind[":ente"] = $_SESSION["ente"]->codice; $sql = "SELECT b_commissioni.oggetto, b_commissioni.codice, b_commissioni.scadenza, b_commissioni.modulo FROM b_commissioni JOIN r_commissione ON b_commissioni.codice = r_commissione.codice_commissione WHERE r_commissione.codice_utente = :utente AND b_commissioni.scadenza >= now() AND b_commissioni.codice_gestore = :ente "; $risultati = $pdo->go($sql,$bind); if ($risultati->rowCount() > 0) { $return["recordsTotal"] = (int)$risultati->rowCount(); if (!empty($get["search"]["value"])) { $sql .= " AND ( "; $suddivisione = suddivisione_pdo($get["search"]["value"],"b_commissioni.oggetto"); $sql .= "OR (" . $suddivisione["sql"] . ") "; $bind = array_merge($bind,$suddivisione["bind"]); $sql .= ") "; } $order = "b_commissioni.scadenza "; switch($get["order"][0]["column"]) { case "1": $order = "b_commissioni.oggetto "; break; } if ($get["order"][0]["dir"] == "desc") { $order.= "DESC "; } else { $order.= "ASC "; } $sql .= "ORDER BY " . $order . ", b_commissioni.scadenza ASC "; $risultatiBeforLimit = $pdo->go($sql,$bind); if ($get["length"] !== "-1") { $sql.= "LIMIT ". (int)$get["start"] .", " . (int)$get["length"]; } $risultati = $pdo->go($sql,$bind); if ($risultati->rowCount() > 0) { if (!empty($get["search"]["value"])) { $return["recordsFiltered"] = (int)$risultatiBeforLimit->rowCount(); } else { $return["recordsFiltered"] = $return["recordsTotal"]; } $return["data"] = array(); while($record = $risultati->fetch(PDO::FETCH_ASSOC)) { $panelHref = (($backend) ? "/backend" : "") . "/commissione/edit.php?codice={$record["codice"]}"; $row = array(); $row[] = "{$record["oggetto"]}"; $row[] = mysql2datetime($record["scadenza"]); $row[] = __(Modulo::getInfo($record["modulo"])["titolo"] ?? "Modulo sconosciuto"); $row[] = ""; $return["data"][] = $row; } } else { $return["data"] = array(); } } else { $return["error"] = "No record"; } return $return; } public static function getBadge() { global $pdo; $badge = 0; $bind = array(":utente"=>$_SESSION["utente"]->codice,":ente"=>$_SESSION["ente"]->codice); $sql_badge = "SELECT b_commissioni.codice FROM b_commissioni JOIN r_commissione ON b_commissioni.codice = r_commissione.codice_commissione WHERE r_commissione.codice_utente = :utente AND b_commissioni.scadenza >= now() AND codice_gestore = :ente "; $ris_badge = $pdo->go($sql_badge,$bind); $badge += $ris_badge->rowCount(); return $badge; } public static function init($codice) { global $pdo; $bind = array(":utente"=>$_SESSION["utente"]->codice); $bind[":codice"] = $codice; $bind[":ente"] = $_SESSION["ente"]->codice; $sql = "SELECT b_commissioni.* FROM b_commissioni JOIN r_commissione ON b_commissioni.codice = r_commissione.codice_commissione WHERE r_commissione.codice_utente = :utente AND r_commissione.codice_commissione = :codice AND b_commissioni.scadenza >= now() AND b_commissioni.codice_gestore = :ente "; $ris = $pdo->go($sql,$bind); if ($ris->rowCount() > 0) { $obj = new self(); $obj->info = $ris->fetch(PDO::FETCH_ASSOC); $obj->manager = new Commissione($obj->info["modulo"],$obj->info["codice_elemento"],"commissione"); $obj->db = $pdo; return $obj; } } public function printPanel($get) { if (!empty($this->manager)) { $object = $this->manager->getObject(); include __DIR__ . "/views/panel.php"; } else { alertManager::printAlertBox(__("Imposibile accedere"),__("Errore inizializzazione pannello")); } } public function printCoppie($get) { if (!empty($this->manager)) { $object = $this->manager->getObject(); include __DIR__ . "/views/coppie.php"; } else { alertManager::printAlertBox(__("Imposibile accedere"),__("Errore inizializzazione pannello")); } } public function saveValutazione($post) { $esito = ["error" => true, "msg"=> "", "action" => ""]; $infoCommissione = $this->info; if (!empty($this->manager)) { $object = $this->manager->getObject(); if (!empty($object)) { if (method_exists($object,"setLotto")) { $continua = false; if (!empty($post["codice_lotto"]) && $object->setLotto($post["codice_lotto"])) { $continua = true; } } else { $continua = true; } if ($continua) { $criteri = $object->getCriteriValutabili($post["codice_criterio"] ?? NULL); $partecipanti = $object->getPartecipanti(null,true); if (!empty($criteri)) { $criterio = $criteri[0]; $coppie = true; $coefficienti = []; if (count($partecipanti) < 3 || $infoCommissione["modalita"] == "R") { $coppie = false; } if ($coppie) { if (!empty($post["valutazione"])) { $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_confronto_coppie"; $salva->operazione = "INSERT"; $delete = $this->db->prepare("DELETE FROM b_confronto_coppie WHERE codice_commissione = :codice_commissione AND codice_utente = :codice_utente AND codice_criterio = :codice_criterio AND codice_partecipante_1 = :a AND codice_partecipante_2 = :b "); $delete->bindValue(":codice_commissione",$infoCommissione["codice"]); $delete->bindValue(":codice_utente",$_SESSION["utente"]->codice); $delete->bindValue(":codice_criterio",$criterio["codice"]); foreach($post["valutazione"] AS $operatori => $voti) { $operatori = explode("_",$operatori); $voti = explode("_",$voti); $delete->bindValue(":a",$operatori[0]); $delete->bindValue(":b",$operatori[1]); $delete->execute(); $tmp = []; $tmp["codice_commissione"] = $infoCommissione["codice"]; $tmp["codice_criterio"] = $criterio["codice"]; $tmp["codice_utente"] = $_SESSION["utente"]->codice; $tmp["codice_partecipante_1"] = $operatori[0]; $tmp["codice_partecipante_2"] = $operatori[1]; $tmp["punteggio_partecipante_1"] = $voti[0]; $tmp["punteggio_partecipante_2"] = $voti[1]; $salva->oggetto = $tmp; $salva->save(); } $saved = $this->db->prepare("SELECT codice_partecipante_1, codice_partecipante_2, punteggio_partecipante_1, punteggio_partecipante_2 FROM b_confronto_coppie WHERE codice_commissione = :codice_commissione AND codice_utente = :codice_utente AND codice_criterio = :codice_criterio "); $saved->bindValue(":codice_commissione",$infoCommissione["codice"]); $saved->bindValue(":codice_utente",$_SESSION["utente"]->codice); $saved->bindValue(":codice_criterio",$criterio["codice"]); $saved->execute(); if ($saved->rowCount() > 0) { $somme = []; $count = []; $total = count($partecipanti) - 1; $createCoefficienti = true; while($valutazione = $saved->fetch(PDO::FETCH_ASSOC)) { for ($i = 1; $i <= 2; $i++) { if (!isset($somme[$valutazione["codice_partecipante_".$i]])) { $somme[$valutazione["codice_partecipante_".$i]] = 0; $count[$valutazione["codice_partecipante_".$i]] = 0; } $count[$valutazione["codice_partecipante_".$i]]++; $somme[$valutazione["codice_partecipante_".$i]] += $valutazione["punteggio_partecipante_".$i]; } } foreach($count AS $valutazioni) { if ($total != $valutazioni) { $createCoefficienti = false; break; } } if ($createCoefficienti) { $coefficienti = tuttogareMath::proporzionale($somme,1,9); } } } } else { foreach($post["partecipante"] AS $partecipante => $valutazione) { if (is_numeric($valutazione)) { $coefficienti[$partecipante] = $valutazione / 10; } } } $esito["error"] = false; if (!empty($coefficienti)) { $codici_partecipanti = array_keys($partecipanti,"codice"); if (!empty($codici_partecipanti)) { $codici_partecipanti = implode(",",$codici_partecipanti); $bind = [":codice_commissione"=>$infoCommissione["codice"],":codice_utente"=>$_SESSION["utente"]->codice,":codice_criterio"=>$criterio["codice"]]; $this->db->go("DELETE FROM b_coefficienti_commissari WHERE codice_commissione = :codice_commissione AND codice_utente = :codice_utente AND codice_criterio = :codice_criterio AND codice_partecipante IN ({$codici_partecipanti})",$bind); } $salva = new salva(); $salva->debug = false; $salva->nome_tabella = "b_coefficienti_commissari"; $salva->operazione = "INSERT"; foreach($coefficienti AS $partecipante => $coefficiente) { $tmp = []; $tmp["codice_commissione"] = $infoCommissione["codice"]; $tmp["codice_criterio"] = $criterio["codice"]; $tmp["codice_utente"] = $_SESSION["utente"]->codice; $tmp["codice_partecipante"] = $partecipante; $tmp["coefficiente"] = $coefficiente; $salva->oggetto = $tmp; $salva->save(); } } $esito["action"] = ($coppie) ? "window.location.reload();" : "window.location.href='edit.php?codice={$infoCommissione["codice"]}';"; } } } } return $esito; } } ?>