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.
461 righe
16 KiB
461 righe
16 KiB
<?php |
|
|
|
require_once ROOT . "/lib/classes/IDataClass.php"; |
|
|
|
/** |
|
* Description of Account |
|
* |
|
* @author Gigi |
|
*/ |
|
class Account extends DataClass { |
|
|
|
const TABLE_NAME = "ACCOUNT"; |
|
const SEQ_NAME = "ACCOUNT_ID_SEQ"; |
|
|
|
public $ID = 0; // PK |
|
public $CODICE_FISCALE = ''; |
|
public $USERNAME = ''; |
|
public $PASSWORD = ''; |
|
public $DATA_REGISTRAZIONE = null; |
|
public $AUTORIZZAZIONE_TRATTAMENTO = ''; |
|
public $CANCELLATO = 0; |
|
public $CanLogIn = false; |
|
public $CountDomande = 0; |
|
|
|
/**/ |
|
public $IP = null; |
|
public $Anagrafica = null; |
|
public $NucleoFamiliare = null; |
|
|
|
public function __construct($src = null) { |
|
global $con; |
|
if ($src == null){ |
|
return; |
|
} |
|
if (is_array($src)) { |
|
if (isset($src['ID']) && $src['ID'] > 0) { |
|
$this->_loadAndFillObject($src['ID'], self::TABLE_NAME, $src); |
|
} else { |
|
$this->_loadByRow($src, $stripSlashes); |
|
} |
|
} elseif (intval($src)) { |
|
$this->_loadById($src, self::TABLE_NAME, true); |
|
} |
|
$this->loadDati($src); |
|
} |
|
|
|
/* |
|
* Load dati a corredo dell'account (anagrafica, domande ecc.) |
|
*/ |
|
|
|
public function loadDati($src = array()) { |
|
|
|
|
|
$this->Anagrafica = $this->loadAccountAnagrafica(); |
|
$this->CountDomande = $this->countDomandeAssociate(); |
|
$this->CanLogIn = $this->checkAuthPersonale(); |
|
$this->NucleoFamiliare = $this->loadNucleoFamiliare(); |
|
if (isset($src['IP']) && !empty($src['IP'])) { |
|
$this->IP = $src['IP']; |
|
} else { |
|
$this->IP = Utils::get_IP_address(); |
|
} |
|
} |
|
|
|
public function loadNucleoFamiliare(){ |
|
return AccountNucleoFamiliare::load(1); |
|
} |
|
|
|
/** |
|
* Conta il numero di istanze per stato stato |
|
* @return int |
|
*/ |
|
public function loadDomandeAssociate() { |
|
global $STATI_DOMANDA; |
|
|
|
$domande = Domanda::selectFromAccount(); |
|
$istanze = array(); |
|
foreach ($STATI_DOMANDA as $key => $value) { |
|
$istanze[$key] = 0; |
|
} |
|
$istanzeAtecoStato = array(); |
|
|
|
foreach ($domande as $v) { |
|
$c_ateco = $v['CODICE_ATECO']; |
|
if ($c_ateco != "" && (!isset($istanzeAtecoStato[$c_ateco]) || ($istanzeAtecoStato[$c_ateco] == 0 && $v['STATO'] == 1))) { |
|
$istanzeAtecoStato[] = $v['STATO']; |
|
} |
|
} |
|
foreach ($istanzeAtecoStato as $v) { |
|
$istanze[$v]++; |
|
} |
|
|
|
return $istanze; |
|
} |
|
|
|
public function countDomandeAssociate() { |
|
global $con; |
|
$response = Utils::initDefaultResponse(); |
|
$filter = " ID_ACCOUNT = '" . $this->ID . "' AND STATO > " . INPREPARAZIONE; |
|
|
|
$sql = "SELECT COUNT(ID) AS TOTREC FROM " . Domanda::TABLE_NAME . " WHERE " . $filter; |
|
$stmn = $con->prepare($sql); |
|
try { |
|
$stmn->execute(); |
|
$row = $stmn->fetch(PDO::FETCH_ASSOC); |
|
$response = $row['TOTREC']; |
|
} catch (Exception $exc) { |
|
$response['esito'] = -999; |
|
$response['erroreDescrizione'] = $exc->getMessage(); |
|
} |
|
|
|
return $response; |
|
} |
|
|
|
/** |
|
* Controllo se sono un utente presente all'interno dell'anagrafica fornita dalla regione |
|
* @global type $con |
|
* @return type boolean |
|
*/ |
|
public function checkAuthPersonale() { |
|
global $con; |
|
return 1; |
|
} |
|
|
|
/** |
|
* Load dati from anagrafica personale (primo accesso o accesso con anagrafica non confermata) |
|
*/ |
|
public function LoadDatiFromAnagraficaPersonale() { |
|
$anag = AnagraficaPersonale::load($this->CODICE_FISCALE); |
|
$this->Anagrafica->NOME = $anag->NOME; |
|
$this->Anagrafica->COGNOME = $anag->COGNOME; |
|
$this->Anagrafica->DATA_NASCITA = $anag->DATA_NASCITA; |
|
$this->Anagrafica->SESSO = Utils::extractGenderFromCF($this->CODICE_FISCALE); |
|
} |
|
|
|
/** |
|
* init account da dati di sessione |
|
*/ |
|
public static function initAccountFromSessione($account = null) { |
|
if (!empty($account)) { |
|
$response = new Account(); //$account['ID'] |
|
$anagrafica = new AccountAnagrafica(); |
|
$key_anagrafica = 'Anagrafica'; |
|
$anagrafica->_loadByRow($account[$key_anagrafica]); |
|
$response->_loadByRow($account); |
|
$response->CanLogIn = $response->checkAuthPersonale(); |
|
$response->CountDomande = $response->countDomandeAssociate(); |
|
$response->Anagrafica = $anagrafica; // assegnamo un oggetto come anagrafica e non un array |
|
|
|
if ($response->AUTORIZZAZIONE_TRATTAMENTO != 1) { |
|
$response->Anagrafica->SPID_CELLULARE = $account[$key_anagrafica]['SPID_CELLULARE']; |
|
$response->Anagrafica->SPID_EMAIL = $account[$key_anagrafica]['SPID_EMAIL']; |
|
$response->Anagrafica->SPID_TIPO_DOCUMENTO = $account[$key_anagrafica]['SPID_TIPO_DOCUMENTO']; |
|
$response->Anagrafica->SPID_DOCUMENTO = $account[$key_anagrafica]['SPID_DOCUMENTO']; |
|
$response->Anagrafica->SPID_DOCUMENTO_ENTE = $account[$key_anagrafica]['SPID_DOCUMENTO_ENTE']; |
|
$response->Anagrafica->SPID_DOCUMENTO_RILASCIO = $account[$key_anagrafica]['SPID_DOCUMENTO_RILASCIO']; |
|
$response->Anagrafica->SPID_DOCUMENTO_SCADENZA = $account[$key_anagrafica]['SPID_DOCUMENTO_SCADENZA']; |
|
} |
|
} |
|
return $response; |
|
} |
|
|
|
public function loadAccountAnagrafica() { |
|
return new AccountAnagrafica($this->CODICE_FISCALE); |
|
} |
|
|
|
public function loadSchedaPersona() { |
|
return array();// |
|
} |
|
|
|
/* |
|
* Set Session with current LoggedAccount Load By Codice Fiscale |
|
*/ |
|
|
|
public function reloadSession() { |
|
global $LoggedAccount; |
|
session_name('affitti_2022'); |
|
session_start(); |
|
$LoggedAccount = new Account($LoggedAccount->ID); |
|
$_SESSION['ID'] = $LoggedAccount->ID; |
|
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount); |
|
} |
|
|
|
/* |
|
* Set Session with current LoggedAccount Load By Codice Fiscale |
|
*/ |
|
|
|
public function SetSession($codiceFiscale = '') { |
|
session_name('affitti_2022'); |
|
session_start(); |
|
$LoggedAccount = SELF::load($codiceFiscale); |
|
$_SESSION['ID'] = $LoggedAccount->ID; |
|
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount); |
|
} |
|
|
|
/* |
|
* Select id by Field |
|
* default field: codice Fiscale |
|
*/ |
|
|
|
public static function load($field = "", $fieldName = "CODICE_FISCALE") { |
|
global $con; |
|
$account = new Account(); |
|
if (!empty($field) && !empty($fieldName)) { |
|
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE " . $fieldName . " = :" . $fieldName . " "; |
|
$stmn = $con->prepare($sql); |
|
$stmn->bindParam(":" . $fieldName, $field); |
|
try { |
|
$stmn->execute(); |
|
$row = $stmn->fetch(PDO::FETCH_ASSOC); |
|
if (intval($row['ID']) > 0) { |
|
Utils::FillObjectFromRow($account, $row); |
|
$account->loadDati(); // DA VERIFICARE |
|
} |
|
} catch (Exception $exc) { |
|
$exc->getMessage(); |
|
} |
|
} |
|
return $account; |
|
} |
|
|
|
public function Save() { |
|
global $con, $LoggedAccount; |
|
$vars = get_object_vars($this); |
|
/* REMOVE LOCAL VAR */ |
|
unset($vars['IP']); |
|
unset($vars['SchedaPersona']); |
|
unset($vars['NucleoFamiliare']); |
|
unset($vars['Anagrafica']); |
|
unset($vars['CountDomande']); |
|
unset($vars['CanLogIn']); |
|
/**/ |
|
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars); |
|
$queryabi = $con->prepare($sql); |
|
foreach ($vars as $k => $v) { |
|
if ($k == "ID" && $v == 0){ |
|
continue; |
|
} |
|
$queryabi->bindValue(":" . $k, $v); |
|
} |
|
try { |
|
$it = parent::_Save($queryabi); |
|
} catch (Exception $exc) { |
|
$it['esito'] = -999; |
|
$it['erroreDescrizione'] = $exc->getMessage(); |
|
} |
|
return $it; |
|
} |
|
|
|
/** |
|
* Elimina l'oggetto corrente dal database e restituisce TRUE se ha successo |
|
* |
|
* @return bool Risultato booleano dell'operazione |
|
*/ |
|
public function Delete() { |
|
return parent::_LogicalDelete(self::TABLE_NAME, "id = " . $this->id); |
|
} |
|
|
|
/** |
|
* Funzione per la visualizzazione dei logs |
|
* @param type $record |
|
* @param type $campo |
|
*/ |
|
public function Parse(&$record, $campo = "") { |
|
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo)); |
|
} |
|
|
|
public function SaveAuth($auth = null) { |
|
if ($this->AUTORIZZAZIONE_TRATTAMENTO == 1) { |
|
$response = Utils::initDefaultResponse(true); |
|
} else { |
|
$response = Utils::initDefaultResponse(false, "L'autorizzazione al trattamento dei dati è obbligatoria"); |
|
if (!empty($auth)) { |
|
$this->AUTORIZZAZIONE_TRATTAMENTO = 1; |
|
$response = $this->Save(); |
|
} |
|
} |
|
return $response; |
|
} |
|
|
|
public function getFieldAuthConsenso() { |
|
global $LoggedAccount; |
|
$reponse = ''; |
|
if ($LoggedAccount->AUTORIZZAZIONE_TRATTAMENTO > 0) { |
|
$reponse = '<div class="col-12 text-right">Visualizza <a href="'.LINK_PRIVACY.'" target="_blank"><b>l\'informativa sulla privacy</b></a> ai sensi del Regolamento UE 2016/679 (GDPR)</div>'; |
|
} else { |
|
$reponse = ' |
|
<div class="col-2 text-right"> |
|
<input class="form-control " type="checkbox" id="consenso_informativo" name="AUTORIZZAZIONE_TRATTAMENTO" > |
|
</div> |
|
<div class="col-10"> |
|
<label for="defaultCheck1"> |
|
<span class="text-danger">* </span><b>Autorizzo il trattamento dei dati forniti ai sensi delle vigenti disposizioni in materia di <a href="'.LINK_PRIVACY.'" target="_blank"><b>privacy</b></a> ai sensi del Regolamento UE 2016/679 (GDPR)</b> |
|
</label></div>'; |
|
} |
|
return $reponse; |
|
} |
|
|
|
public function checkAuthShowDomanda($idDomanda = 0) { |
|
global $LoggedAccount; |
|
$record = null; |
|
if (intval($idDomanda) > 0) { |
|
$record = Domanda::loadDomandaCompleta($idDomanda); |
|
if ($record['CODICE_FISCALE'] != $LoggedAccount->CODICE_FISCALE) { |
|
Utils::RedirectTo('dashboard.php'); |
|
} |
|
} else { |
|
Utils::RedirectTo('dashboard.php'); |
|
} |
|
return $record; |
|
} |
|
|
|
public function checkAuthShowDomandaPage($idDomanda = 0) { |
|
global $LoggedAccount; |
|
if (intval($idDomanda) > 0) { |
|
$domanda = new Domanda($idDomanda); |
|
if ($domanda->ID_ACCOUNT != $LoggedAccount->ID) { |
|
Utils::RedirectTo(HTTP_PRIVATE_SECTION . 'dashboard.php'); |
|
} |
|
} else { |
|
Utils::RedirectTo(HTTP_PRIVATE_SECTION . 'dashboard.php'); |
|
} |
|
} |
|
|
|
public function checkTrattamento($trattamento = null) { |
|
global $LoggedAccount; |
|
if ($LoggedAccount->AUTORIZZAZIONE_TRATTAMENTO == 1) { |
|
$response = true; |
|
} else if (strtolower($trattamento) == 'on' || intval($trattamento) == 1) { |
|
$response = true; |
|
}else{ |
|
$response = false; |
|
} |
|
return $response; |
|
} |
|
|
|
public function checkAuthNewAccount() { |
|
if (Utils::isStatoSportelloPreparazione()) { |
|
$response = true; |
|
} else if (Utils::isStatoSportelloPreparazione(true) && !empty($this->Anagrafica->CODICE_FISCALE) && $this->CountDomande > 0) { |
|
$response = true; |
|
}else{ |
|
$response = false; |
|
} |
|
return $response; |
|
} |
|
|
|
public function checkAuthApiFase() { |
|
return $this->checkAuthNewAccount(); |
|
} |
|
|
|
public function checkAuthPageFase() { |
|
|
|
if (!$this->checkAuthNewAccount()) { |
|
Utils::RedirectTo(HTTP_PRIVATE_SECTION . 'info.php'); |
|
} else { |
|
if (intval($this->AUTORIZZAZIONE_TRATTAMENTO) == 0 && ( |
|
Utils::checkCurrentPage('dashboard') || Utils::checkCurrentPage('faq') || Utils::checkCurrentPage('domanda') || Utils::checkCurrentPage('azienda') || Utils::checkCurrentPage('istanze') |
|
) |
|
) { |
|
Utils::RedirectTo(HTTP_PRIVATE_SECTION . 'account.php'); |
|
} |
|
} |
|
} |
|
|
|
public function checkStateEditableFieldPage() { |
|
$response = Utils::getFieldsState(Utils::isStatoSportelloPreparazione()); |
|
if ($this->CountDomande > 0) { |
|
$response = array( |
|
'readonly' => "readonly='readonly'", |
|
'hidden' => "hidden='true'", |
|
'disabled' => "disabled='true'", |
|
'stato' => 0 |
|
); |
|
} |
|
return $response; |
|
} |
|
|
|
public function checkStateEditableFieldPageCambioIban() { |
|
$response = Utils::getFieldsState(Utils::isStatoSportelloCambioIban()); |
|
|
|
return $response; |
|
} |
|
|
|
|
|
/** |
|
* Controlla se tra le imprese legate al codice fiscale è presente l'impresa per cui si sta lavorando la pratica |
|
* @global type $LoggedAccount |
|
* @param type $piva |
|
* @return boolean |
|
*/ |
|
public function checkImpresaFromLoggedAccount($piva = null) { |
|
global $LoggedAccount; |
|
if ($LoggedAccount->ID > 0 && !empty($piva)) { |
|
foreach ($LoggedAccount->SchedaPersona->imprese_persona as $v) { |
|
if ($v['c_fiscale'] == $piva) { |
|
return true; |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
|
|
|
|
/* * *************************************************************** |
|
* |
|
* OCI SECTION |
|
* |
|
*/ |
|
|
|
/* |
|
* Select id by codice Fiscale |
|
*/ |
|
|
|
public static function selectFromCodiceFiscaleOCI($codice_fiscale = "") { |
|
global $conOCI; |
|
$account = new Account(); |
|
try { |
|
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE CODICE_FISCALE = :codice_fiscale "; |
|
$statement = $conOCI->db_getStatement($sql); |
|
oci_bind_by_name($statement, ":codice_fiscale", $codice_fiscale); |
|
$row = $conOCI->db_fetch_array($statement); |
|
if (intval($row['ID']) > 0) { |
|
Utils::FillObjectFromRow($account, $row); |
|
} |
|
$conOCI->db_free_statement($statement); |
|
$conOCI->db_close(); |
|
} catch (Exception $exc) { |
|
$conOCI->db_free_statement($statement); |
|
$conOCI->db_close(); |
|
} |
|
return $account; |
|
} |
|
|
|
/* Load account by ID (evitando il costruttore) */ |
|
|
|
public static function LoadByIDOCI($id = null) { |
|
global $conOCI; |
|
$account = new Account(); |
|
if (intval($id) > 0) { |
|
try { |
|
$sql = "SELECT * FROM " . self::TABLE_NAME . " WHERE ID = :id "; |
|
$statement = $conOCI->db_getStatement($sql); |
|
oci_bind_by_name($statement, ":id", $id); |
|
$row = $conOCI->db_fetch_array($statement); |
|
if (intval($row['ID']) > 0) { |
|
Utils::FillObjectFromRow($account, $row); |
|
} |
|
$conOCI->db_free_statement($statement); |
|
$conOCI->db_close(); |
|
} catch (Exception $exc) { |
|
$conOCI->db_free_statement($statement); |
|
$conOCI->db_close(); |
|
} |
|
} |
|
return $account; |
|
} |
|
|
|
|
|
}
|
|
|