db = $pdo; $this->codice_ente = $_SESSION["ente"]->codice ?? 0; $this->codice_oe = $_SESSION['utente']->oe['codice'] ?? 0; } public static function init() { $instance = new Rubrica(); return $instance; } public static function getInfo($codice) { $instance = new Rubrica(); $soggetto = self::getAllSoggetti(['codice' => $codice])[0] ?? null; if (!empty($soggetto['extra_info'])) { $soggetto['extra_info'] = json_decode($soggetto['extra_info'], TRUE); } $instance->info = $soggetto; return $instance; } public static function getAllSoggetti($filters = [], $operation = null) { global $pdo; $sql = "SELECT * FROM b_soggetti_oe WHERE soft_delete = 'N' "; $bind = array(); if(!empty($_SESSION['utente']->oe['codice'])){ $sql .= " AND codice_oe = :codice_oe "; $bind = array_merge($bind, [":codice_oe" => $_SESSION['utente']->oe['codice']]); } if (!empty($filters)) { if (!empty($filters['codice'])) { $bind = array_merge($bind, [":codice" => $filters['codice']]); $sql .= " AND codice = :codice "; } if (!empty($filters['soggetto'])) { $bind = array_merge($bind, [":soggetto" => $filters['soggetto']]); $sql .= " AND soggetto = :soggetto "; } } if (!empty($operation)) { // Operazione dedicata al not in if (array_key_exists('notIn', $operation) && !empty($operation['notIn'])) { $sql .= " AND codice NOT IN ($operation[notIn]) "; } if (array_key_exists('in', $operation)) { $sql .= " AND codice IN ($operation[in]) "; } } $risultato = $pdo->go($sql,$bind); if ($risultato->rowCount() >= 1 ) { $record = $risultato->fetchAll(PDO::FETCH_ASSOC); } return $record ?? []; } /** * nel caso di modifica, guardare contrattoDocumentale::getSoggetti */ public static function getElencoSoggettiInteressati() { return [ '10' => __('Dipendente/Incaricato'), '15' => __('Macchinario/Strumento'), ]; } public static function getAnagraficaExtraInfo() { global $root; $json = jsonToArray("$root/contratti/rubrica/extra_info.json"); return $json['anagrafica'] ?? null; } public static function getSoggettoInteressato($value) { $soggetti = self::getElencoSoggettiInteressati(); if(!empty($soggetti[$value])){ return $soggetti[$value]; } return null; } public function getRuoli($codice_contratto) { global $pdo; if (!empty($codice_contratto)) { $bind = [ ':codice_contratto' => $codice_contratto, ':codice_soggetto_oe' => $this->info['codice'] ]; $sql = "SELECT r_contratto_b_soggetto_oe_ruolo.codice_ruolo FROM r_contratto_b_soggetto_oe JOIN r_contratto_b_soggetto_oe_ruolo ON r_contratto_b_soggetto_oe.codice = r_contratto_b_soggetto_oe_ruolo.codice_r_contratto_b_soggetti_oe WHERE r_contratto_b_soggetto_oe.codice_contratto = :codice_contratto AND r_contratto_b_soggetto_oe.codice_soggetto_oe = :codice_soggetto_oe "; $ris = $pdo->go($sql,$bind); if ($ris->rowCount() > 0) { $ris = $ris->fetchAll(PDO::FETCH_COLUMN); $ids = implode(",", $ris); $sql = "SELECT * FROM b_ruoli_documentale WHERE codice IN ($ids) AND soft_delete = 'N' "; $ruoli = $pdo->go($sql); if ($ruoli->rowCount() > 0) { $ruoli = $ruoli->fetchAll(PDO::FETCH_ASSOC); return $ruoli; } } } return []; } }