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($this->ID); } /** * Verifica se un determinato codice fiscale appartiene al nucleo familiare del dichiarante * @param $cf * @return false */ public function isNucleoFamiliare($cf){ $return = false; $nucleo = AccountNucleoFamiliare::load(); foreach ($nucleo as $persona){ if(trim($cf) == trim($persona['CODICE_FISCALE'])){ $return = true; return $return; } } return $return; } /** * 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 . "' "; $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']; $response = 0; } 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() { $anagrafica = new AccountAnagrafica($this->CODICE_FISCALE); $nucleo = AccountNucleoFamiliare::loadFromCf($this->CODICE_FISCALE, $this->ID); $anagrafica->FLAG = $nucleo->FLAG; $anagrafica->STUDENTE = $nucleo->STUDENTE; return $anagrafica; } public function loadSchedaPersona() { return array();// } /* * Set Session with current LoggedAccount Load By Codice Fiscale */ public function reloadSession() { global $LoggedAccount; session_name('voli_2023_2024'); 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('voli_2023_2024'); 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 = '