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.
 
 
 

152 righe
4.4 KiB

<?php
require_once "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 $AUTORIZZAZIONE_TRATTAMENTO = '';
public $CANCELLATO = 0;
public $CountDomande = 0;
/**/
// public $PRIMO_ACCESSO = false;
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($this->ID, 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);
}
public function loadAccountAnagrafica() {
return new AccountAnagrafica($this->CODICE_FISCALE);
}
/*
* 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)) {
$stmn = $con->prepare("SELECT * FROM " . self::TABLE_NAME . " WHERE " . $fieldName . " = :" . $fieldName . " ");
$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) {
}
}
return $account;
}
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
/* REMOVE LOCAL VAR */
unset($vars['IP']);
unset($vars['Anagrafica']);
unset($vars['CountDomande']);
// unset($vars['PRIMO_ACCESSO']);
/**/
$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['descrizioneErrore'] = $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 = "") {
$props = get_class_vars(get_class($this));
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
}
}