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.
151 righe
3.8 KiB
151 righe
3.8 KiB
<? |
|
|
|
class Rubrica { |
|
|
|
public $info; |
|
protected $db; |
|
public $codice_ente; |
|
public $codice_oe; |
|
|
|
private function __construct() { |
|
global $pdo; |
|
$this->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 []; |
|
|
|
} |
|
|
|
} |