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.
260 righe
7.5 KiB
260 righe
7.5 KiB
<? |
|
class contrattoDocumentale { |
|
|
|
public $info; |
|
protected $db; |
|
public $codice_ente; |
|
|
|
|
|
private function __construct() { |
|
global $pdo; |
|
$this->db = $pdo; |
|
$this->codice_ente = $_SESSION["ente"]->codice ?? 0; |
|
} |
|
|
|
public static function getInfo($codice) |
|
{ |
|
$instance = new ContrattoDocumentale(); |
|
|
|
$instance->info = self::getAllDocumentali(['codice' => $codice])[0] ?? []; |
|
|
|
if (!empty($instance->info['codice'])) { |
|
$instance->info['preavviso'] = self::getPreavvisi($codice); |
|
|
|
// se è una classe documentale con soggetto == OE non mostrare i ruoli |
|
if ($instance->info['soggetto'] != '5' ) { |
|
$instance->info['ruoli'] = self::getRuoli($instance->info['codice']); |
|
} |
|
} |
|
|
|
return $instance; |
|
} |
|
|
|
public static function getAllDocumentali($filters = []) |
|
{ |
|
global $pdo; |
|
|
|
$sql = "SELECT * FROM b_classe_documentale WHERE (codice_ente = :codice_ente OR codice_ente = 0) AND soft_delete = 'N' "; |
|
|
|
$bind = array(":codice_ente" => $_SESSION["ente"]->codice); |
|
|
|
if (!empty($filters)) { |
|
if (!empty($filters['codice'])) { |
|
$bind[':codice'] = $filters['codice']; |
|
$sql .= " AND codice = :codice "; |
|
} |
|
|
|
if (!empty($filters['titolo'])) { |
|
$bind[':titolo'] = "%{$filters['titolo']}%"; |
|
$sql .= " AND titolo LIKE :titolo "; |
|
} |
|
|
|
if(!empty($filters['attivo'])){ |
|
$bind[':attivo'] = $filters['attivo']; |
|
$sql .= " AND attivo = :attivo "; |
|
} |
|
|
|
if(!empty($filters['codici'])){ |
|
$ids = arrayIsNumeric($filters['codici']); |
|
$ids = implode(',', $ids); |
|
$sql .= " AND codice IN ($ids) "; |
|
} |
|
|
|
if(!empty($filters['not_codici'])){ |
|
$ids = arrayIsNumeric($filters['not_codici']); |
|
$ids = implode(',', $ids); |
|
$sql .= " AND codice NOT IN ($ids) "; |
|
} |
|
|
|
} |
|
|
|
|
|
$risultato = $pdo->go($sql,$bind); |
|
|
|
if ($risultato->rowCount() > 0 ) { |
|
$record = $risultato->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
return $record ?? []; |
|
|
|
} |
|
|
|
public static function getDocumentaleByRuoli($codiceRuoli) |
|
{ |
|
global $pdo; |
|
|
|
$sql = "SELECT b_classe_documentale.*, r_classe_documentale_ruoli.codice_ruolo |
|
FROM b_classe_documentale |
|
JOIN r_classe_documentale_ruoli ON r_classe_documentale_ruoli.codice_classe_documentale = b_classe_documentale.codice |
|
WHERE (b_classe_documentale.codice_ente = :codice_ente OR b_classe_documentale.codice_ente = 0) |
|
AND b_classe_documentale.soft_delete = 'N' "; |
|
|
|
if(!empty($codiceRuoli)){ |
|
$ids = arrayIsNumeric($codiceRuoli); |
|
$ids = implode(',', $ids); |
|
$sql .= " AND r_classe_documentale_ruoli.codice_ruolo IN ($ids) "; |
|
} |
|
|
|
$sql .= " GROUP BY b_classe_documentale.codice "; |
|
|
|
$bind = array(":codice_ente"=>$_SESSION["ente"]->codice); |
|
|
|
$risultato = $pdo->go($sql,$bind); |
|
|
|
if ($risultato->rowCount() > 0 ) { |
|
$record = $risultato->fetchAll(PDO::FETCH_ASSOC); |
|
} |
|
|
|
return $record ?? []; |
|
} |
|
|
|
static function getAmbitoValidita() |
|
{ |
|
return [ |
|
'contratto' => 'Contratto', |
|
'oe' => 'Operatore Economico' |
|
]; |
|
} |
|
|
|
/** |
|
* nel caso di modifica, guardare rubrica::getElencoSoggettiInteressati |
|
*/ |
|
static function getSoggetti($soggetto = null) |
|
{ |
|
|
|
$soggetti = [ |
|
'5' => __('Operatore Economico'), |
|
'10' => __('Dipendente/Incaricato'), |
|
'15' => __('Macchinario/Strumento') |
|
]; |
|
|
|
if (isset($soggetto)) { |
|
return $soggetti[$soggetto] ?? null; |
|
}else{ |
|
return $soggetti; |
|
} |
|
|
|
} |
|
|
|
static function salvaPreavvisi($codice_classe_documentale, $preavviso = null) |
|
{ |
|
global $pdo; |
|
|
|
$bind = array(":codice_classe_documentale"=>$codice_classe_documentale); |
|
$sql = "DELETE FROM b_preavvisi WHERE codice_classe_documentale = :codice_classe_documentale "; |
|
$ris = $pdo->go($sql,$bind); |
|
|
|
if (!empty($preavviso)) { |
|
$preavviso = explode(',', $preavviso); |
|
$preavviso = array_filter(array_unique($preavviso)); |
|
sort($preavviso, SORT_NUMERIC); |
|
}else{ |
|
$preavviso = ['1','3','7','15','30']; |
|
} |
|
|
|
foreach ($preavviso as $key => $giorni) { |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
$salva->nome_tabella = "b_preavvisi"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = ['codice_classe_documentale' => $codice_classe_documentale, 'preavviso' => $giorni, 'timestamp_creazione' => date("d/m/Y H:i:s")]; |
|
$salva_preavviso = $salva->save(); |
|
if (empty($salva_preavviso)) { |
|
return false; |
|
} |
|
} |
|
|
|
return true; |
|
} |
|
|
|
public static function getPreavvisi($codice_classe_documentale) |
|
{ |
|
|
|
global $pdo; |
|
|
|
if(!empty(self::getAllDocumentali(['codice' => $codice_classe_documentale]))){ |
|
$bind = array(":codice_classe_documentale" => (int)$codice_classe_documentale); |
|
$sql = "SELECT preavviso FROM b_preavvisi WHERE codice_classe_documentale = :codice_classe_documentale"; |
|
|
|
$ris = $pdo->go($sql, $bind); |
|
|
|
if ($ris->rowCount() > 0) { |
|
$giorni = $ris->fetchAll(PDO::FETCH_ASSOC); |
|
return implode(",",array_map('implode',$giorni)); |
|
} |
|
} |
|
return []; |
|
} |
|
|
|
public static function getRuoli($codice_classe_documentale) |
|
{ |
|
global $pdo; |
|
|
|
$bind = array(":codice_classe_documentale" => (int)$codice_classe_documentale); |
|
$sql = "SELECT b_ruoli_documentale.* |
|
FROM r_classe_documentale_ruoli |
|
JOIN b_ruoli_documentale ON r_classe_documentale_ruoli.codice_ruolo = b_ruoli_documentale.codice |
|
WHERE r_classe_documentale_ruoli.codice_classe_documentale = :codice_classe_documentale |
|
AND b_ruoli_documentale.soft_delete = 'N' "; |
|
|
|
$ris = $pdo->go($sql, $bind); |
|
|
|
if ($ris->rowCount() > 0) { |
|
$ruoli = $ris->fetchAll(PDO::FETCH_ASSOC) ; |
|
return $ruoli; |
|
} |
|
|
|
return []; |
|
|
|
} |
|
|
|
public static function checkBeforeDelete($codice) |
|
{ |
|
global $pdo; |
|
|
|
$bind = array(':codice_classe_documentale' => $codice); |
|
|
|
$sql = "SELECT codice_classe_documentale |
|
FROM b_contratti_richiesta_documentale |
|
WHERE codice_classe_documentale = :codice_classe_documentale |
|
AND soft_delete = 'N' "; |
|
|
|
$ris = $pdo->go($sql, $bind); |
|
|
|
if($ris->rowCount() > 0){ |
|
return false; |
|
} |
|
return true; |
|
} |
|
|
|
static function salvaRelazioniRuoli($codice_classe_documentale, $ruolo = []) |
|
{ |
|
|
|
global $pdo; |
|
|
|
if (!empty($ruolo)) { |
|
$ruolo = array_unique($ruolo); |
|
$bind = array(":codice_classe_documentale" => $codice_classe_documentale); |
|
$sql = "DELETE FROM r_classe_documentale_ruoli WHERE codice_classe_documentale = :codice_classe_documentale "; |
|
$ris = $pdo->go($sql,$bind); |
|
|
|
foreach ($ruolo as $key => $ruolo) { |
|
$salva = new salva(); |
|
$salva->debug = false; |
|
$salva->nome_tabella = "r_classe_documentale_ruoli"; |
|
$salva->operazione = "INSERT"; |
|
$salva->oggetto = ['codice_classe_documentale' => $codice_classe_documentale, 'codice_ruolo' => $ruolo, 'timestamp_creazione' => date("d/m/Y H:i:s")]; |
|
$salva = $salva->save(); |
|
if (empty($salva)) { |
|
return false; |
|
} |
|
} |
|
|
|
return true; |
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
}
|
|
|