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.
167 righe
6.0 KiB
167 righe
6.0 KiB
<? |
|
class Incarichi { |
|
|
|
public $modulo; |
|
public $elemento; |
|
public $lock; |
|
public $oggetto; |
|
public $rupObbligatorio; |
|
private $object; |
|
public $admin; |
|
public $viewPath; |
|
public $db; |
|
|
|
public static function ruoli() { |
|
$ruoli = []; |
|
$ruoli["14"] = "Responsabile Unico di Progetto"; |
|
$ruoli["1"] = "Progettista interno alla S.A"; |
|
$ruoli["2"] = "Progettista esterno alla S.A"; |
|
$ruoli["3"] = "Aggiudicatario qualificato"; |
|
$ruoli["4"] = "Progettista qualificato incaricato dall'aggiudicatario"; |
|
$ruoli["5"] = "Direttore Lavori"; |
|
$ruoli["6"] = "Coordinatore della sicurezza in fase di progettazione"; |
|
$ruoli["7"] = "Coordinatore della sicurezza in corso d'opera"; |
|
$ruoli["8"] = "Direttore dell'esecuzione del contratto"; |
|
$ruoli["9"] = "Responsabile subfase del procedimento"; |
|
$ruoli["10"] = "Collaudatore statico"; |
|
$ruoli["11"] = "Redattore del certificato di regolare esecuzione"; |
|
$ruoli["12"] = "Presidente Commissione di Collaudo/Collaudatore"; |
|
$ruoli["13"] = "Componente Commissione di Collaudo"; |
|
$ruoli["15"] = "Responsabile fase progettazione/predisposizione documentazione tecnico-amministrativa"; |
|
$ruoli["16"] = "Responsabile fase di affidamento"; |
|
$ruoli["17"] = "Responsabile fase di esecuzione"; |
|
$ruoli["18"] = "Referente della Stazione Appaltante"; |
|
$ruoli["19"] = "ATI"; |
|
return $ruoli; |
|
} |
|
|
|
public static function moduliAbilitati() { |
|
$return = []; |
|
$return["gare"] = ["titolo"=>"Gare e affidamenti","script"=>"/gare/incarichi/init.php"]; |
|
$return["albo_fornitori"] = ["titolo"=>"Albo fornitori","script"=>"/albo_fornitori/incarichi/init.php"]; |
|
$return["pcp"] = ["titolo"=>"Appalti pre-commerciali","script"=>"/pcp/incarichi/init.php"]; |
|
$return["progetti"] = ["titolo"=>"Progetti d'investimento","script"=>"/progetti/incarichi/init.php"]; |
|
$return["concorsi"] = ["titolo"=>"Concorsi di progettazione","script"=>"/concorsi/incarichi/init.php"]; |
|
$return["albi_commissione"] = ["titolo"=>"Albi commissione","script"=>"/albi_commissione/incarichi/init.php"]; |
|
return $return; |
|
} |
|
|
|
public function __construct($modulo,$elemento) |
|
{ |
|
|
|
if (!empty($modulo) && !empty($elemento) && !empty(self::moduliAbilitati()[$modulo])) { |
|
global $pdo; |
|
$this->modulo = $modulo; |
|
$this->elemento = $elemento; |
|
$this->db = $pdo; |
|
$this->rupObbligatorio = true; |
|
return $this; |
|
} |
|
return false; |
|
} |
|
|
|
public function getIncaricati() { |
|
return self::getIncaricatiFromElement($this->modulo,$this->elemento); |
|
} |
|
|
|
public function checkSingleRP(Array $incaricati) : Bool { |
|
// verifichiamo che ci sia un singolo RUP nel modulo gare |
|
if(in_array($this->modulo, ["gare", "concorsi", "albo_fornitori"])) { |
|
$count_rup = 0; |
|
foreach($incaricati as $incaricato) { |
|
if($incaricato["ruolo"] == 14) $count_rup++; |
|
} |
|
if($count_rup !== 1) { |
|
return false; |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
public function saveIncaricato(Array $incaricato) : ?Int { |
|
global $config; |
|
$incaricato["codice_fiscale"] = trim(strtoupper($incaricato["codice_fiscale"])); |
|
$incaricato["extraInfo"] = simple_encrypt(json_encode($incaricato["extraInfo"]),$config["simple_encrypt"]["incarichi"]); |
|
$incaricato["modulo"] = $this->modulo; |
|
$incaricato["codice_elemento"] = $this->elemento; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
$salva->nome_tabella = "b_incaricati"; |
|
$salva->operazione = !empty($incaricato["codice"]) ? "UPDATE" : "INSERT"; |
|
$salva->oggetto = $incaricato; |
|
if ($incaricato["ruolo"] == 14) { |
|
$object = $this->getObject(); |
|
Utente::addPermissionForRP($incaricato["codice_fiscale"],$object->info["codice_ente"] ?? $_SESSION["ente"]->codice,$this->modulo,$this->elemento); |
|
} |
|
return $salva->save(); |
|
} |
|
|
|
public function deleteUnused(Array $found) { |
|
$sql = "DELETE FROM b_incaricati WHERE modulo = :modulo and codice_elemento = :elemento "; |
|
if (!empty($found)) { |
|
$sql .= " AND codice NOT IN (".implode(",",$found).")"; |
|
} |
|
$this->db->go($sql,[":modulo"=>$this->modulo,":elemento"=>$this->elemento]); |
|
scriviLog("b_incaricati","DELETE",$this->db->getSQL()); |
|
} |
|
|
|
public static function getIncaricatiFromElement($modulo,$elemento,$ruolo = null) { |
|
$bind = [":modulo"=>$modulo,":elemento"=>$elemento]; |
|
$sql = "SELECT * FROM b_incaricati WHERE modulo = :modulo AND codice_elemento = :elemento"; |
|
if (!empty($ruolo)) { |
|
$bind[":ruolo"] = $ruolo; |
|
$sql .= " AND ruolo = :ruolo "; |
|
} |
|
global $pdo; |
|
$return = $pdo->go($sql,$bind); |
|
if ($return->rowCount() > 0) { |
|
$tmp = $return->fetchAll(PDO::FETCH_ASSOC); |
|
$return = []; |
|
foreach($tmp AS $incaricato) { |
|
$incaricato["extraInfo"] = json_decode(simple_decrypt($incaricato["extraInfo"],"incaricatiAAAAAA"),true); |
|
$return[] = $incaricato; |
|
} |
|
return $return; |
|
} |
|
} |
|
|
|
public function checkAdminPermission() { |
|
global $beRoot; |
|
$returnObject = false; |
|
$path = $beRoot . self::moduliAbilitati()[$this->modulo]["script"]; |
|
if (file_exists($path)) { |
|
include($path); |
|
return $return; |
|
} |
|
return false; |
|
} |
|
|
|
public function getObject() { |
|
if (empty($this->object)) { |
|
global $beRoot; |
|
$returnObject = true; |
|
$path = $beRoot . self::moduliAbilitati()[$this->modulo]["script"]; |
|
if (file_exists($path)) { |
|
include($path); |
|
if (!empty($return)) { |
|
$this->object = $return; |
|
} |
|
} |
|
} |
|
if (!empty($this->object)) { |
|
return $this->object; |
|
} |
|
return false; |
|
} |
|
|
|
public function printEditor() { |
|
if ($this->checkAdminPermission()) { |
|
$this->admin = true; |
|
include (__DIR__."/backend-manage.php"); |
|
} |
|
return false; |
|
} |
|
|
|
} |
|
|
|
?>
|