gestione gare pubbliche
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

<?
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;
}
}
?>