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.
 
 
 
 
 

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 [];
}
}