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.
743 righe
27 KiB
743 righe
27 KiB
<? |
|
|
|
use Whoops\Run; |
|
|
|
class attiCPN { |
|
|
|
public $info; |
|
public $version; |
|
public $modulo; |
|
public $elemento; |
|
public $codice_cpn; |
|
public $codice_lotto; |
|
private $checksPDO; |
|
private $db; |
|
|
|
public function __construct() { |
|
global $pdo; |
|
$this->db = $pdo; |
|
$this->version = self::getVersion(); |
|
$this->modulo = "cpn"; |
|
} |
|
|
|
public function updateStato($stato) { |
|
if (empty($this->info["stato"]) || $this->info["stato"] < $stato) { |
|
$this->db->go("UPDATE b_cpn SET stato = :stato WHERE codice = :codice",[":stato"=>$stato,":codice"=>$this->info["codice"]]); |
|
} |
|
if (isset($_SESSION["ente"])) { |
|
$_SESSION["ente"]->manageUpdates("cpn",$this->info["codice"],$this); |
|
} |
|
} |
|
|
|
public static function getVersion($data = "") { |
|
$return = "latest"; |
|
if (!empty($data)) { |
|
$data = strtotime($data); |
|
// TODO: Implementare riconoscimento versione su aggiornamenti |
|
} |
|
return $return; |
|
} |
|
|
|
public static function getSceltaContraenteFromGara($id,$data = "") { |
|
$source = "raccordoGare.json"; |
|
if (!empty($source)) { |
|
$version = self::getVersion($data); |
|
$path = self::getVersionPath($version); |
|
if (!empty($path)) { |
|
$path .= "/misc/{$source}"; |
|
if (file_exists($path)) { |
|
$options = jsonToArray($path); |
|
if (!empty($options)) { |
|
return $options[$id] ?? false; |
|
} |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
public static function getVersionPath($version) { |
|
$path = __DIR__ . "/versions/{$version}"; |
|
if (is_dir($path)) { return $path; } |
|
return false; |
|
} |
|
|
|
public function printEditGara() { |
|
return $this->includeView("/views/form-gara.php"); |
|
} |
|
|
|
public function printEditLotto($codice_lotto = 0) { |
|
return $this->includeView("/views/form-lotto.php",$codice_lotto); |
|
} |
|
|
|
public function printEditAtto($codice_atto = 0,$tipologia = null) { |
|
return $this->includeView("/views/form-atto.php",$codice_atto,$tipologia); |
|
} |
|
|
|
private function includeView($view,$codice_riferimento=0,$data = null) { |
|
$path = self::getVersionPath($this->version); |
|
if (!empty($path)) { |
|
$path .= $view; |
|
if (file_exists($path)) { |
|
include($path); |
|
return true; |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
public static function relazioniModulo($modulo,$codice_gara,$codice_lotto = null) { |
|
global $pdo; |
|
$bind = []; |
|
$bind[":modulo"] = $modulo; |
|
$bind[":codice_gara"] = $codice_gara; |
|
$sql = "SELECT * FROM r_cpn_moduli WHERE modulo = :modulo AND codice_gara = :codice_gara "; |
|
if ($codice_lotto !== null) { |
|
$bind[":codice_lotto"] = $codice_lotto; |
|
$sql .= " AND codice_lotto = :codice_lotto "; |
|
} |
|
return $pdo->go($sql,$bind)->fetch(PDO::FETCH_ASSOC); |
|
} |
|
|
|
public function getRelazioni($codice_lotto = null) { |
|
$bind = [":codice_cpn"=>$this->info["codice"]]; |
|
$sql = "SELECT * FROM r_cpn_moduli WHERE gara_cpn = :codice_cpn "; |
|
if (!empty($codice_lotto)) { |
|
$bind[":codice_lotto"] = $codice_lotto; |
|
$sql .= " AND lotto_cpn = :codice_lotto "; |
|
} |
|
return $this->db->go($sql,$bind)->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
public function getBreadcrumb($breadcrumb = []) { |
|
$relazioni = $this->getRelazioni(); |
|
if (!empty($relazioni)) { |
|
foreach($relazioni AS $relazione) { |
|
if ($_SESSION["utente"]->permission($relazione["modulo"],$relazione["codice_gara"])) { |
|
global $beRoot; |
|
if (file_exists("{$beRoot}/{$relazione["modulo"]}/panel.php")) { |
|
$infoModulo = Modulo::getInfo($relazione["modulo"]); |
|
$breadcrumb["/{$relazione["modulo"]}/panel.php?codice={$relazione["codice_gara"]}"] = __($infoModulo["titolo"]) . " - " . __("Pannello"); |
|
} |
|
} |
|
} |
|
} |
|
return $breadcrumb; |
|
} |
|
|
|
public static function relazioniDisponibili() { |
|
$return = []; |
|
$return["pcp"] = ["link"=>"/backend/pcp/panel.php?codice=#codice_gara#&codice_round=#codice_fase#"]; |
|
$return["gare"] = ["link"=>"/backend/gare/panel.php?codice=#codice_gara#&codice_round=#codice_fase#"]; |
|
return $return; |
|
} |
|
|
|
public function saveRelazione($modulo,$codice_gara,$codice_lotto,$lotto_cpn) { |
|
$relazioniDisponibili = self::relazioniDisponibili(); |
|
if (!empty($relazioniDisponibili[$modulo])) { |
|
$relazione = []; |
|
$relazione["modulo"] = $modulo; |
|
$relazione["codice_gara"] = $codice_gara; |
|
$relazione["codice_lotto"] = $codice_lotto; |
|
$relazione["gara_cpn"] = $this->info["codice"]; |
|
$relazione["lotto_cpn"] = $lotto_cpn; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "r_cpn_moduli"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = $relazione; |
|
$codice = $salva->save(); |
|
if (!empty($codice)) { return true; } |
|
} |
|
} |
|
|
|
private static function moduliSuggerimenti() { |
|
$moduli = []; |
|
$moduli["gare"] = ["titolo"=>"Gare e affidamenti","url"=>"/backend/gare/cpn/suggestions.php"]; |
|
$moduli["pcp"] = ["titolo"=>"PCP","url"=>"/backend/pcp/cpn/suggestions.php"]; |
|
return $moduli; |
|
} |
|
|
|
public function printSuggerimenti() { |
|
$return = false; |
|
include __DIR__."/atti/table-suggerimenti.php"; |
|
return $return; |
|
} |
|
|
|
public function suggerimenti() { |
|
$data = []; |
|
global $root; |
|
$moduli = self::moduliSuggerimenti(); |
|
if (!empty($moduli)) { |
|
foreach($moduli AS $modulo => $info) { |
|
if (!empty($info["url"]) && file_exists($root.$info["url"])) { |
|
foreach($this->getLotti() AS $lotto) { |
|
$cig = $lotto["cig"]; |
|
if (!empty($cig)) { |
|
include($root.$info["url"]); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $data; |
|
} |
|
|
|
public function linkAttoAllegato(int $atto, array $allegati) { |
|
if (!empty($atto) && !empty($allegati) && !empty($this->getAtti($atto)[0])) { |
|
$suggerimenti = $this->suggerimenti(); |
|
foreach($suggerimenti AS $suggerimento) { |
|
if (in_array($suggerimento["codice"],$allegati) !== false) { |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "r_cpn_atti_files"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = [ |
|
"codice_atto" => $atto, |
|
"codice_allegato" => $suggerimento["codice"], |
|
"modulo" => $suggerimento["sourceType"], |
|
"riferimento_allegato" => $suggerimento["sourceID"] |
|
]; |
|
$salva->save(); |
|
} |
|
} |
|
} |
|
} |
|
|
|
public function saveGara($post,$saveDati) { |
|
$return = false; |
|
$entiAbilitati = $_SESSION["utente"]->getEntiBeneficiari(false); |
|
$checkEnte = false; |
|
foreach($entiAbilitati AS $ente) { |
|
if ($post["codice_ente"] == $ente["codice"]) { |
|
$checkEnte = true; |
|
break; |
|
} |
|
} |
|
if ($checkEnte) { |
|
$availableDati[] = "idAnac"; |
|
$availableDati[] = "cf_sua"; |
|
$availableDati[] = "denominazione_sua"; |
|
$availableDati[] = "importo"; |
|
$availableDati[] = "idAnac"; |
|
$availableDati[] = "cigAccQuadro"; |
|
$availableDati[] = "ufficio"; |
|
$availableDati[] = "tipoProcedura"; |
|
$availableDati[] = "settore"; |
|
$availableDati[] = "centraleCommittenza"; |
|
$availableDati[] = "realizzazione"; |
|
$availableDati[] = "cognome"; |
|
$availableDati[] = "nome"; |
|
$availableDati[] = "cfPiva"; |
|
|
|
$dati = []; |
|
if (!empty($this->info)) { $dati = json_decode($this->info["dati"],true); } |
|
foreach($availableDati AS $key) { |
|
if (isset($post["dati"][$key])) { |
|
$dati[$key] = $post["dati"][$key]; |
|
} else { |
|
$upper = strtoupper($key); |
|
if (isset($post["dati"][$upper])) { |
|
$dati[$key] = $post["dati"][$upper]; |
|
} else { |
|
$dati[$key] = ""; |
|
} |
|
} |
|
} |
|
$gara = []; |
|
$gara["codice"] = $post["codice"] ?? 0; |
|
$gara["codice_ente"] = $post["codice_ente"]; |
|
$gara["oggetto"] = $post["oggetto"]; |
|
$gara["dati"] = json_encode($dati); |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_cpn"; |
|
$salva->operazione = (empty($gara["codice"])) ? "INSERT" : "UPDATE"; |
|
$salva->oggetto = $gara; |
|
$codice = $salva->save(); |
|
if ($codice != false) { |
|
$error = false; |
|
$gara["codice"] = $codice; |
|
$this->info = $gara; |
|
$return["esito"] = true; |
|
$return["codice"] = $codice; |
|
} else { |
|
$return["errori"][] = __("Errore nel salvataggio della gara"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Ente non abilitato"); |
|
} |
|
if (!empty($return["codice"])) { |
|
$this->getManagerRegistro()->addToLog("SAVE",__("Dati gara")); |
|
if (empty($post["codice"])) { |
|
if ($this->modulo != "cpn") { |
|
$utenti = ente::getUtentiFromModulo($this->modulo,$_SESSION["ente"]->codice,"",$return["codice"]); |
|
if ($_SESSION["utente"]->gerarchia > 15) { $utenti[] = $_SESSION["utente"]->codice; } |
|
if (!empty($utenti)) { |
|
foreach($utenti AS $utente) { |
|
$permesso = []; |
|
$permesso["sezione"] = "cpn"; |
|
$permesso["codice_elemento"] = $this->info["codice"]; |
|
$permesso["codice_gestore"] = $_SESSION["ente"]->codice; |
|
$permesso["funzione"] = "0"; |
|
$permesso["codice_utente"] = $utente; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "r_permessi"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = $permesso; |
|
$salva->save(); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public function saveLotto($lotto,$saveDati = false) { |
|
$return = false; |
|
if (!empty($this->info["codice"])) { |
|
if (!empty($lotto["cpv"])) { |
|
$dbLotto = get_campi("b_cpn_lotti"); |
|
if (!empty($lotto["codice"])) { $dbLotto = $this->getLotti($lotto["codice"])[0]; } |
|
$dati = []; |
|
if (!empty($dbLotto)) { |
|
$lotto["codice"] = $dbLotto["codice"]; |
|
$dati = json_decode($dbLotto["dati"],true); |
|
} |
|
if ($saveDati) { |
|
$availableDati = []; |
|
$availableDati[] = "cupEsente"; |
|
$availableDati[] = "idSceltaContraente50"; |
|
$availableDati[] = "criterioAggiudicazione"; |
|
$availableDati[] = "luogoNuts"; |
|
$availableDati[] = "categoria"; |
|
$availableDati[] = "classifica"; |
|
$availableDati[] = "tipoAppalto"; |
|
$availableDati[] = "contrattoEsclusoAlleggerito"; |
|
$availableDati[] = "esclusioneRegimeSpeciale"; |
|
foreach($availableDati AS $key) { |
|
if (isset($lotto["dati"][$key])) { |
|
$dati[$key] = $lotto["dati"][$key]; |
|
} else { |
|
$upper = strtoupper($key); |
|
if (isset($lotto["dati"][$upper])) { |
|
$dati[$key] = $lotto["dati"][$upper]; |
|
} else { |
|
$dati[$key] = ""; |
|
} |
|
} |
|
} |
|
} |
|
$dati["cpv"] = $lotto["cpv"]; |
|
if (isset($dati["cupEsente"]) && $dati["cupEsente"] === "1") { |
|
$lotto["cup"] = ""; |
|
} |
|
$lotto["dati"] = json_encode($dati); |
|
$lotto["codice_cpn"] = $this->info["codice"]; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_cpn_lotti"; |
|
$salva->operazione = (empty($lotto["codice"])) ? "INSERT" : "UPDATE"; |
|
$salva->oggetto = $lotto; |
|
$codice = $salva->save(); |
|
if ($codice != false) { |
|
$return["esito"] = true; |
|
$return["codice"] = $codice; |
|
$this->getManagerRegistro()->addToLog("SAVE",__("Dati lotto"),$lotto["codice"] ?? 0); |
|
} else { |
|
$return["errori"][] = __("Errore nel salvataggio del lotto"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Selezionare almeno una categoria CPV"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Nessuna gara selezionata"); |
|
} |
|
return $return; |
|
} |
|
|
|
public function saveAtto($atto,$saveDati = true) { |
|
$return = false; |
|
if (!empty($this->info["codice"])) { |
|
$tipologia = self::getOptions("atti")[$atto["tipo"]]; |
|
if (!empty($tipologia)) { |
|
$dbAtto = get_campi("b_cpn_atti"); |
|
if (!empty($atto["codice"])) { $dbAtto = $this->getAtti($atto["codice"])[0]; } |
|
if (!empty($dbAtto)) { |
|
$atto["codice"] = $dbAtto["codice"]; |
|
} |
|
$storico = $this->getAtti(); |
|
$continua = true; |
|
if (!empty($storico)) { |
|
foreach($storico AS $tmp) { |
|
if ($tmp["tipo"] == $atto["tipo"] && (empty($atto["codice"]) || $tmp["codice"] != $atto["codice"])) { |
|
$continua = false; |
|
} |
|
} |
|
} |
|
if ($continua) { |
|
if ($saveDati) { |
|
$atto["dati"] = json_encode($atto["dati"]); |
|
} |
|
$atto["codice_cpn"] = $this->info["codice"]; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_cpn_atti"; |
|
$salva->operazione = (empty($atto["codice"])) ? "INSERT" : "UPDATE"; |
|
$salva->oggetto = $atto; |
|
$codice = $salva->save(); |
|
if ($codice != false) { |
|
$return["esito"] = true; |
|
$return["codice"] = $codice; |
|
$this->getManagerRegistro()->addToLog("SAVE",$tipologia,$atto["codice"]); |
|
} else { |
|
$return["errori"][] = __("Errore nel salvataggio dell' atto"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Tipologia già inserita"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Tipologia non prevista"); |
|
} |
|
} else { |
|
$return["errori"][] = __("Nessuna gara selezionata"); |
|
} |
|
return $return; |
|
} |
|
|
|
public function getManagerRegistro() { |
|
return new registriManager("cpn",$this->info["codice"]); |
|
} |
|
|
|
public function addToLog($operazione,$oggetto) { |
|
return $this->getManagerRegistro()->addToLog($operazione,$oggetto,$this->info["codice"]); |
|
} |
|
|
|
public function getLog($start=0,$length=-1) { |
|
return $this->getManagerRegistro()->getLog($start,$length); |
|
} |
|
|
|
public function getLastCPNLog($method,$codice_lotto = 0) { |
|
return $this->db->go("SELECT codice,esito,msg FROM b_cpn_log WHERE codice_cpn = :cpn AND metodo = :method AND codice_lotto = :codice_lotto ORDER BY codice DESC LIMIT 0,1", |
|
[":cpn"=>$this->info["codice"],":method"=>$method,":codice_lotto"=>$codice_lotto])->fetch(PDO::FETCH_ASSOC) ?? FALSE; |
|
} |
|
|
|
public function updateCPNLog($method,$esito,$msg,$codice_lotto = 0) { |
|
$log = $this->getLastCPNLog($method,$codice_lotto); |
|
if (!empty($log)) { |
|
$log["esito"] = $esito; |
|
$log["msg"] = $msg; |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
|
|
$salva->nome_tabella = "b_cpn_log"; |
|
$salva->operazione = "UPDATE"; |
|
$salva->oggetto = $log; |
|
$salva->save(); |
|
} |
|
} |
|
|
|
public function getStrutturaGara() { |
|
$lotti = $this->getLotti(); |
|
if (!empty($lotti)) { |
|
$return = []; |
|
$info = $this->info; |
|
$dati = $this->getDati(); |
|
$return = [ |
|
"oggetto" => $info["oggetto"], |
|
"idAnac" => $dati["idAnac"], |
|
"codiceFiscaleSA" => $dati["cf_sua"], |
|
"cigAccQuadro" => $dati["cigAccQuadro"], |
|
"tipoProcedura" => $dati["tipoProcedura"], |
|
"centraleCommittenza" => $dati["centraleCommittenza"], |
|
"importoGara" => $dati["importo"], |
|
"settore" => $dati["settore"], |
|
"realizzazione" => $dati["realizzazione"], |
|
"tecnicoRup" => [ |
|
"cognome" => $dati["cognome"], |
|
"nome" => $dati["nome"], |
|
"cfPiva" => $dati["cfPiva"] |
|
], |
|
"lotti" => [] |
|
]; |
|
$count = 0; |
|
|
|
foreach ($lotti AS $lottoDb) { |
|
$count++; |
|
$datiLotto = json_decode($lottoDb["dati"],true); |
|
if (!empty($datiLotto["cpv"])) { |
|
$cpvs = cpvManager::getInfo($datiLotto["cpv"]); |
|
$cpvPrimaria = null; |
|
$cpvSecondarie = []; |
|
foreach($cpvs AS $cpv) { |
|
if (isset($cpvPrimaria)) { |
|
$cpvSecondarie[] = $cpv["codice_completo"]; |
|
} else { |
|
$cpvPrimaria = $cpv["codice_completo"]; |
|
} |
|
} |
|
} |
|
$lotto = [ |
|
"oggetto" => $lottoDb["oggetto"], |
|
"importoLotto" => $lottoDb["importo"], |
|
"numeroLotto" => $count, |
|
"cig" => $lottoDb["cig"], |
|
"cup" => $lottoDb["cup"], |
|
"cpv" => $cpvPrimaria, |
|
"idSceltaContraente50" => $datiLotto["idSceltaContraente50"] ?? "", |
|
"categoria" => $datiLotto["categoria"] ?? "", |
|
"classe" => $datiLotto["classifica"] ?? "" ?? "", |
|
"tipoAppalto" => $datiLotto["tipoAppalto"] ?? "", |
|
"criterioAggiudicazione" => $datiLotto["criterioAggiudicazione"] ?? "", |
|
"luogoNuts" => $datiLotto["luogoNuts"] ?? "", |
|
"cupEsente" => $datiLotto["cupEsente"] ?? "", |
|
"contrattoEsclusoAlleggerito" => $datiLotto["contrattoEsclusoAlleggerito"] ?? "", |
|
"esclusioneRegimeSpeciale" => $datiLotto["esclusioneRegimeSpeciale" ?? ""] |
|
]; |
|
if (!empty($cpvSecondarie)) { |
|
$lotto["cpvSecondari"] = []; |
|
foreach($cpvSecondarie AS $cpv) { |
|
$lotto["cpvSecondari"][] = ["cpv"=>$cpv]; |
|
} |
|
} |
|
$return["lotti"][] = $lotto; |
|
} |
|
if (!empty($info["id_cpn"])) { |
|
$return["idRicevuto"] = $info["id_cpn"]; |
|
} |
|
return $return; |
|
} |
|
} |
|
|
|
public function getStrutturaAtto($codice_atto) { |
|
global $config; |
|
$atto = $this->getAtti($codice_atto)[0] ?? null; |
|
if (!empty($atto)) { |
|
$dati = json_decode($atto["dati"],true); |
|
$documenti = $this->getAllegati($atto["codice"]); |
|
if (!empty($dati) && !empty($documenti)) { |
|
$return = [ |
|
"tipoDocumento" => $atto["tipo"], |
|
"eventualeSpecificazione" => $dati["note"] ?? "", |
|
"dataPubblicazione" => $dati["dataPubblicazione"] ?? "", |
|
"dataScadenza" => $dati["dataScadenza"] ?? "", |
|
"dataProvvedimento" => $dati["dataProvvedimento"] ?? "", |
|
"numeroProvvedimento" => $dati["numeroProvvedimento"] ?? "", |
|
"dataStipula" => $dati["dataStipula"] ?? "", |
|
"numeroRepertorio" => $dati["numeroRepertorio"] ?? "", |
|
"ribassoAggiudicazione" => $dati["ribassoAggiudicazione"] ?? "", |
|
"offertaAumento" => $dati["offertaAumento"] ?? "", |
|
"importoAggiudicazione" => $dati["importoAggiudicazione"] ?? "", |
|
"dataAggiudicazione" => $dati["dataAggiudicazione"] ?? "" |
|
]; |
|
$docs = []; |
|
$link = $config["protocollo"] . $_SESSION["ente"]->getInfo()["dominio"]; |
|
if (!empty($documenti["allegati"])) { |
|
foreach($documenti["allegati"] AS $allegato) { |
|
$docs[] = [ |
|
"titolo" => $allegato["titolo"], |
|
"url" => $link.filesManager::getAttachURL($allegato,$atto["codice"],"cpn-public",false) |
|
]; |
|
} |
|
} |
|
if (!empty($documenti["refs"])) { |
|
foreach($documenti["refs"] AS $allegato) { |
|
$docs[] = [ |
|
"titolo" => $allegato["titolo"], |
|
"url" => $link.$allegato["href"] |
|
]; |
|
} |
|
} |
|
$return["documenti"] = $docs; |
|
$return["gara"] = $this->getStrutturaGara(); |
|
if (!empty($atto["idRicevuto"])) { |
|
$return["idRicevuto"] = $atto["idRicevuto"]; |
|
} |
|
return $return; |
|
} |
|
} |
|
} |
|
|
|
public function getRequest($method,$codice_riferimento = null) { |
|
$dati = null; |
|
if ($method == "sendGara") { |
|
$dati = ["method"=>"inviaGara","data"=>$this->getStrutturaGara()]; |
|
} else if ($method == "sendAtto" && !empty($codice_riferimento)) { |
|
$dati = ["method"=>"inviaAtto","data"=>$this->getStrutturaAtto($codice_riferimento)]; |
|
} |
|
return $dati; |
|
} |
|
|
|
|
|
public function getDati() { |
|
$return = json_decode($this->info["dati"],true); |
|
return $return; |
|
} |
|
|
|
public static function getStati() { |
|
return jsonToArray(__DIR__."/stati.json"); |
|
} |
|
|
|
public function getLotti($codice = null) { |
|
$bind = [":codice_cpn"=>$this->info["codice"]]; |
|
$sql = "SELECT * FROM b_cpn_lotti WHERE codice_cpn = :codice_cpn AND eliminato = 'N' "; |
|
if ($codice !== null) { |
|
$bind[":codice"] = $codice; |
|
$sql .= " AND codice = :codice "; |
|
} |
|
return $this->db->go($sql . " ORDER BY ordinamento, codice",$bind)->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
public function getAtti($codice = null) { |
|
$bind = [":codice_cpn"=>$this->info["codice"]]; |
|
$sql = "SELECT * FROM b_cpn_atti WHERE codice_cpn = :codice_cpn AND eliminato = 'N' "; |
|
if ($codice !== null) { |
|
$bind[":codice"] = $codice; |
|
$sql .= " AND codice = :codice "; |
|
} |
|
return $this->db->go($sql . " ORDER BY codice",$bind)->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
public function getAllegati(int $atto) { |
|
if (!empty($this->getAtti($atto)) && !empty($atto)) { |
|
$refs = $this->getRefsAllegati($atto); |
|
$allegati = filesManager::listFiles($atto,"cpn-public"); |
|
if (!empty($refs) || !empty($allegati)) { |
|
return ["refs"=>$refs,"allegati"=>$allegati]; |
|
} |
|
} |
|
} |
|
|
|
public function getRefsAllegati($atto = null) { |
|
if (empty($atto)) { |
|
$bind = [":codice" => $this->info["codice"]]; |
|
$sql = "SELECT * FROM r_cpn_atti_files WHERE codice_atto IN (SELECT codice FROM b_cpn_atti WHERE codice_cpn = :codice)"; |
|
} else { |
|
$bind = [":codice_atto"=>$atto]; |
|
$sql = "SELECT * FROM r_cpn_atti_files WHERE codice_atto = :codice_atto "; |
|
} |
|
$allegati = $this->db->go($sql . " ORDER BY codice",$bind)->fetchAll(PDO::FETCH_ASSOC); |
|
$return = []; |
|
if (!empty($allegati)) { |
|
foreach($allegati AS $allegato) { |
|
$codice_relazione = $allegato["codice"]; |
|
$allegato = filesManager::listFiles($allegato["riferimento_allegato"],$allegato["modulo"],"A",[$allegato["codice_allegato"]])[0]; |
|
$allegato["codice_relazione"] = $codice_relazione; |
|
$allegato["href"] = filesManager::getAttachURL($allegato,$allegato["sourceID"],$allegato["sourceType"],true); |
|
$return[] = $allegato; |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
public static function init($codice) { |
|
if (!empty($codice) && !empty($_SESSION["utente"]) && !empty($_SESSION["ente"])) { |
|
global $pdo; |
|
$bind = [":codice"=>$codice,":codice_gestore"=>$_SESSION["ente"]->codice]; |
|
$sql = "SELECT * FROM b_cpn WHERE codice = :codice "; |
|
if (!$_SESSION["utente"]->fromHere()) { |
|
$sql .= " AND codice_ente = :codice_ente"; |
|
$bind[":codice_ente"] = $_SESSION["utente"]->codice_ente; |
|
} |
|
if ($_SESSION["utente"]->gerarchia > 10) { |
|
$ids = Utente::getPermissionsInModulo($_SESSION["ente"]->codice,$_SESSION["utente"]->codice,"cpn"); |
|
$ids = implode(",",$ids); |
|
$sql .= " AND b_cpn.codice IN ({$ids}) "; |
|
} |
|
$cpn = $pdo->go($sql,$bind)->fetch(PDO::FETCH_ASSOC); |
|
if (!empty($cpn)) { |
|
$continua = true; |
|
if ($_SESSION["utente"]->codice_ente != $_SESSION["ente"]->codice && $_SESSION["utente"]->codice_ente != $cpn["codice_ente"] && $_SESSION["utente"]->gerarchia > 9) { |
|
$continua = false; |
|
} |
|
if ($continua) { |
|
$instance = new attiCPN(); |
|
$instance->info = $cpn; |
|
$instance->version = self::getVersion($cpn["data_invio_cpn"]); |
|
return $instance; |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
private static function defaultAutenticationLevel() { |
|
return $_SESSION["ente"]->defaultAutenticationLevel(); |
|
} |
|
|
|
public function checkLock($id_cmd) { |
|
$return = true; |
|
$stato = $this->info["stato"] ?? 0; |
|
if (!$_SESSION["utente"]->readOnly) { |
|
if (($stato >= 0) && !empty($id_cmd) && $_SESSION["utente"]->unlockSupporto()) { |
|
$cmd = self::getInfoModulo($id_cmd); |
|
if ($cmd !== false) { |
|
$loa = $cmd["authenticationLevel"] ?? self::defaultAutenticationLevel(); |
|
if ($_SESSION["utente"]->authenticationLevel < $loa) { |
|
return true; |
|
} |
|
if (($stato >= $cmd["stato_minimo"] || $cmd["stato_minimo"] == null) && ($stato <= $cmd["stato_massimo"] || $cmd["stato_massimo"] === null)) { $return = false; } |
|
} |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
static function getModuli($stato = null) { |
|
global $config; |
|
$moduli = jsonToArray($config["jsonFolder"]."/cpn-panel.json"); |
|
$tmp = []; |
|
foreach($moduli AS $id_modulo => $modulo) { |
|
$insert = true; |
|
if ($insert && $stato !== null) { |
|
if ($modulo["stato_minimo"] > $stato) { $insert = false; } |
|
} |
|
if (is_array($modulo["stati_esclusi"]) && in_array($stato,$modulo["stati_esclusi"]) !== false) { $insert = false; } |
|
if ($insert)$tmp[$id_modulo] = $modulo; |
|
$moduli = $tmp; |
|
} |
|
return $moduli; |
|
} |
|
|
|
static function getInfoModulo($radice) { |
|
$return = false; |
|
if (!empty($radice)) { |
|
$moduli = self::getModuli(); |
|
if (!empty($moduli[$radice])) { |
|
$return = $moduli[$radice]; |
|
$return["id"] = $radice; |
|
$return["titolo"] = __($return["titolo"]); |
|
$return["descrizione"] = __($return["descrizione"]); |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
static function getOptions($sorgente, $data = null) { |
|
$path = self::getVersionPath(self::getVersion($data)); |
|
$sorgente .= ".json"; |
|
if (!empty($path)) { |
|
$path .= "/sources/{$sorgente}"; |
|
if (file_exists($path)) { |
|
$data = jsonToArray($path); |
|
if (!empty($data["data"])) { |
|
$return = []; |
|
foreach($data["data"] AS $option) { |
|
$return[$option["code"]] = $option["value"]; |
|
} |
|
ksort($return); |
|
return $return; |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
}
|
|
|