Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
253 righe
12 KiB
253 righe
12 KiB
<? |
|
class PannelloCommissione { |
|
|
|
private $db; |
|
public $info; |
|
public $manager; |
|
|
|
private function __construct() |
|
{ |
|
|
|
} |
|
|
|
public static function printList($backend = false) { |
|
global $config; |
|
global $pdo; |
|
include __DIR__ . "/views/list.php"; |
|
} |
|
|
|
public static function getDataTableJSON($get, $backend = false) { |
|
global $pdo; |
|
$return = array(); |
|
$return["draw"] = (int)$get["draw"]; |
|
$return["recordsTotal"] = (int)0; |
|
$return["recordsFiltered"] = (int)0; |
|
$bind = array(); |
|
$bind[":utente"] = $_SESSION["utente"]->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[] = "<a href='{$panelHref}' title='".__("modifica")."'>{$record["oggetto"]}</a>"; |
|
$row[] = mysql2datetime($record["scadenza"]); |
|
$row[] = __(Modulo::getInfo($record["modulo"])["titolo"] ?? "Modulo sconosciuto"); |
|
$row[] = "<a role='button' href='{$panelHref}' title='".__("modifica")."' class='btn btn-info btn-sm' style='padding-top:7px;'><span class='fa fa-edit'></span></a>"; |
|
$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; |
|
} |
|
} |
|
?>
|