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.
 
 
 

598 righe
25 KiB

<?php
require_once "IDataClass.php";
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of UTENTI
*
* @author Stefano
*/
class Account extends DataClass {
//put your code here
const TABLE_NAME = "ACCOUNT";
const SEQ_NAME = "ACCOUNT_ID_SEQ";
public $ID = 0; // Primary key
public $CODICE_FISCALE = "";
public $CONSENSO = 0;
public $SchedaPersona = array();
public $SPID_MOBILE_PHONE = "";
public $SPID_TIPO_DOCUMENTO = "";
public $SPID_NUMERO_DOCUMENTO = "";
public $SPID_ENTE_RILASCIO = "";
public $SPID_DATA_RILASCIO = "";
public $SPID_DATA_SCADENZA = "";
public $SPID_EMAIL = "";
public $COGNOME = "";
public $NOME = "";
public $INRESPONSETO = "";
public $AUTHNINSTANT = 0;
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->SchedaPersona = array();
}
public static function loadObjFromCodiceF($codice_fiscale = "") {
global $con;
$return = new Account();
$verify = $con->prepare("SELECT * FROM " . self::TABLE_NAME . " WHERE CODICE_FISCALE=:cod ");
$verify->bindParam(":cod", $codice_fiscale);
try {
$verify->execute();
$itVerify = $verify->fetch(PDO::FETCH_ASSOC);
if (intval($itVerify['ID']) > 0) {
Utils::FillObjectFromRow($return, $itVerify);
}
} catch (Exception $exc) {
}
return $return;
}
/*
* Select id by Mail
*/
public function selectId($email = "") {
global $con;
$return = array();
$return['esito'] = 1;
$return['descrizioneErrore'] = "";
$verify = $con->prepare("SELECT ID FROM " . self::TABLE_NAME . " WHERE EMAIL=:email ");
$verify->bindParam(":email", $email);
try {
$verify->execute();
$itVerify = $verify->fetch(PDO::FETCH_ASSOC);
if (intval($itVerify['ID']) > 0) {
$return['ID'] = $itVerify['ID'];
$return['esito'] = 1;
} else {
$return['esito'] = -999;
}
} catch (Exception $exc) {
$return['esito'] = -999;
$return['descrizioneErrore'] = $exc->getMessage();
}
return $return;
}
/*
* Select id by codice Fiscale
*/
public function selectIdFromCodiceF($codice_fiscale = "") {
global $con;
$return = array();
$verify = $con->prepare("SELECT ID FROM " . self::TABLE_NAME . " WHERE CODICE_FISCALE=:cod ");
$verify->bindParam(":cod", $codice_fiscale);
try {
$verify->execute();
$itVerify = $verify->fetch(PDO::FETCH_ASSOC);
if (intval($itVerify['ID']) > 0) {
$return['ID'] = $itVerify['ID'];
$return['esito'] = 1;
} else {
$return['esito'] = -999;
}
} catch (Exception $exc) {
$return['esito'] = -999;
$return['descrizioneErrore'] = $exc->getMessage();
}
return $return;
}
/*
* controllo presenza codice Fiscale
*/
public function controlloCodiceFiscale($codice_fiscale = "") {
global $con;
$return = array();
$return['esito'] = 1;
$return['descrizioneErrore'] = "";
$verify = $con->prepare("SELECT ID FROM " . self::TABLE_NAME . " WHERE CODICE_FISCALE=:codice_fiscale ");
$verify->bindParam(":codice_fiscale", $codice_fiscale);
try {
$verify->execute();
$itVerify = $verify->fetch(PDO::FETCH_ASSOC);
if (intval($itVerify['ID']) > 0) {
$return['esito'] = -999;
$return['erroreDescrizione'] = "Il codice fiscale dell'utente è già registrato";
}
} catch (Exception $exc) {
$return['esito'] = -999;
$return['erroreDescrizione'] = $exc->getMessage();
}
return $return;
}
public static function LoadDataTable($searchQuery = "", $searchArray = array(), $columnName = array(), $columnSortOrder = array(), $start = 0, $offset = 0) {
return parent::_loadDataTable(self::TABLE_NAME, $searchQuery, $searchArray, $columnName, $columnSortOrder, $start, $offset);
}
public static function login_spid($codice_fiscale = "", $mobilePhone = "", $email = "", $idCard = "", $inResponseTo = "", $AuthnInstant = 0) {
global $con, $LoggedAccount, $bando_setup;
session_name('SICILIAPEIFE_BONUSICILIA');
session_start();
$idCardArray = explode(" ", $idCard);
$tipodocumento = $idCardArray[0];
$numerodocumento = $idCardArray[1];
/*BUG FIX TIMSPID*/
if(Utils::is_date($idCardArray[3])){
$enterilascio = $idCardArray[2];
$dataemissione = date("d-m-Y", strtotime($idCardArray[3]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[4]));
}else{
$enterilascio = $idCardArray[2]. " ".$idCardArray[3];
$dataemissione = date("d-m-Y", strtotime($idCardArray[4]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[5]));
}
$return = array();
if(ATTIVA_CONTROLO_BANDO_LOGIN){
if (!$bando_setup->ControllaPeriodoPreparazione()) {
$return['esito'] = -999;
$return['erroreDescrizione'] = 'Il servizio non è attivo.';
return $return;
}
}
//echo "<br>CI ENTRO";
$con->db_transactionStart();
$transaction = false;
$codFisc = trim($codice_fiscale);
$uid_spid = new UID_SPID();
$uid_spid->CODICE_FISCALE = $codFisc;
$uid_spid->INRESPONSETO = $inResponseTo;
$resSpid = $uid_spid->Save();
//echo "<br>CI ENTRO<pre>". print_r($resSpid, true)."</pre>";
if ($resSpid['esito'] == 1) {
//echo "<br>CI ENTRO 2";
$id_accountCodiFis = Account::selectIdFromCodiceF($uid_spid->CODICE_FISCALE);
if ($id_accountCodiFis['esito'] == 1) {
$account = new Account($id_accountCodiFis['ID']);
$account->INRESPONSETO = $inResponseTo;
$account->AUTHNINSTANT = $AuthnInstant;
$respAccount = $account->Save();
//echo "<br>CI ENTRO 3";
if ($respAccount['esito'] == 1) {
$LoggedAccount = $account;
$LoggedAccount->SchedaPersona = SchedaPersona::Load($uid_spid->CODICE_FISCALE);
$jsonEncodeLogged = json_encode($LoggedAccount);
$jsonDecodeLogged = json_decode($jsonEncodeLogged, true);
$LoggedAccount->COGNOME = $jsonDecodeLogged['SchedaPersona']['cognome'];
$LoggedAccount->NOME = $jsonDecodeLogged['SchedaPersona']['nome'];
$LoggedAccount->CODICE_FISCALE = $uid_spid->CODICE_FISCALE;
$LoggedAccount->SPID_MOBILE_PHONE = $mobilePhone;
$LoggedAccount->SPID_EMAIL = $email;
$LoggedAccount->SPID_TIPO_DOCUMENTO = $tipodocumento;
$LoggedAccount->SPID_NUMERO_DOCUMENTO = $numerodocumento;
$LoggedAccount->SPID_ENTE_RILASCIO = $enterilascio;
$LoggedAccount->SPID_DATA_RILASCIO = $dataemissione;
$LoggedAccount->SPID_DATA_SCADENZA = $datascadenza;
$_SESSION['ID'] = $LoggedAccount->ID;
$_SESSION['ControllaPeriodoPreparazione'] = $bando_setup->ControllaPeriodoPreparazione();
$_SESSION['ControllaPeriodoAttestati'] = $bando_setup->ControllaPeriodoAttestati();
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount);
$transaction = true;
//echo "<br>CI ENTRO 4";
}
} else {
$account = new Account();
$account->CODICE_FISCALE = $codFisc;
$account->INRESPONSETO = $inResponseTo;
$account->AUTHNINSTANT = $AuthnInstant;
$respAccount = $account->Save();
if ($respAccount['esito'] == 1) {
$LoggedAccount = $account;
$LoggedAccount->SchedaPersona = SchedaPersona::Load($account->CODICE_FISCALE);
$jsonEncodeLogged = json_encode($LoggedAccount);
$jsonDecodeLogged = json_decode($jsonEncodeLogged, true);
$LoggedAccount->COGNOME = $jsonDecodeLogged['SchedaPersona']['cognome'];
$LoggedAccount->NOME = $jsonDecodeLogged['SchedaPersona']['nome'];
$LoggedAccount->CODICE_FISCALE = $uid_spid->CODICE_FISCALE;
$LoggedAccount->SPID_MOBILE_PHONE = $mobilePhone;
$LoggedAccount->SPID_EMAIL = $email;
$LoggedAccount->SPID_TIPO_DOCUMENTO = $tipodocumento;
$LoggedAccount->SPID_NUMERO_DOCUMENTO = $numerodocumento;
$LoggedAccount->SPID_ENTE_RILASCIO = $enterilascio;
$LoggedAccount->SPID_DATA_RILASCIO = $dataemissione;
$LoggedAccount->SPID_DATA_SCADENZA = $datascadenza;
$_SESSION['ID'] = $LoggedAccount->ID;
$_SESSION['ControllaPeriodoPreparazione'] = $bando_setup->ControllaPeriodoPreparazione();
$_SESSION['ControllaPeriodoAttestati'] = $bando_setup->ControllaPeriodoAttestati();
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount);
$transaction = true;
}
}
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = $resSpid['erroreDescrizione'];
}
if ($transaction) {
$return['esito'] = 1;
$return['custom'] = "quimettocustom";
$con->db_transactionCommit();
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = "Attenzione , riprovare o contattare il Personale Tecnico";
$con->db_transactionRollback();
}
return($return);
}
public static function loginSpidDeroga($codice_fiscale = "", $mobilePhone = "", $email = "", $idCard = "", $inResponseTo = "", $AuthnInstant = 0) {
global $con, $LoggedAccount, $bando_setup;
$idCardArray = explode(" ", $idCard);
$tipodocumento = $idCardArray[0];
$numerodocumento = $idCardArray[1];
/*BUG FIX TIMSPID*/
if(Utils::is_date($idCardArray[3])){
$enterilascio = $idCardArray[2];
$dataemissione = date("d-m-Y", strtotime($idCardArray[3]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[4]));
}else{
$enterilascio = $idCardArray[2]. " ".$idCardArray[3];
$dataemissione = date("d-m-Y", strtotime($idCardArray[4]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[5]));
}
$return = array();
if(ATTIVA_CONTROLO_BANDO_LOGIN){
if (!$bando_setup->ControllaPeriodoDeroga() ) {
$return['esito'] = -999;
$return['erroreDescrizione'] = 'Il servizio non è attivo.';
return $return;
}
}
$con->db_transactionStart();
$transaction = false;
$codFisc = trim($codice_fiscale);
$uid_spid = new UID_SPID();
$uid_spid->CODICE_FISCALE = $codFisc;
$uid_spid->INRESPONSETO = $inResponseTo;
$resSpid = $uid_spid->Save();
if ($resSpid['esito'] == 1) {
$id_accountCodiFis = Account::selectIdFromCodiceF($uid_spid->CODICE_FISCALE);
echo "selectIdFromCodiceF";
Utils::print_array($id_accountCodiFis);exit();
if ($id_accountCodiFis['esito'] == 1) {
$account = new Account($id_accountCodiFis['ID']);
$account->INRESPONSETO = $inResponseTo;
$account->AUTHNINSTANT = $AuthnInstant;
$respAccount = $account->Save();
if ($respAccount['esito'] == 1) {
$verificaDeroga = FixFile::verificaDeroga($uid_spid->CODICE_FISCALE);
echo "verificaDeroga";
Utils::print_array($verificaDeroga);exit();
if($verificaDeroga['esito'] == 1){
$LoggedAccount = $account;
/*$LoggedAccount->SchedaPersona = SchedaPersona::Load($uid_spid->CODICE_FISCALE);
$amerigo = json_encode($LoggedAccount);
$stefano = json_decode($amerigo, true);
$LoggedAccount->COGNOME = $stefano['SchedaPersona']['cognome'];
$LoggedAccount->NOME = $stefano['SchedaPersona']['nome'];*/
$LoggedAccount->CODICE_FISCALE = $uid_spid->CODICE_FISCALE;
$LoggedAccount->SPID_MOBILE_PHONE = $mobilePhone;
$LoggedAccount->SPID_EMAIL = $email;
$LoggedAccount->SPID_TIPO_DOCUMENTO = $tipodocumento;
$LoggedAccount->SPID_NUMERO_DOCUMENTO = $numerodocumento;
$LoggedAccount->SPID_ENTE_RILASCIO = $enterilascio;
$LoggedAccount->SPID_DATA_RILASCIO = $dataemissione;
$LoggedAccount->SPID_DATA_SCADENZA = $datascadenza;
$_SESSION['ID'] = $LoggedAccount->ID;
$_SESSION['ControllaPeriodoPreparazione'] = $bando_setup->ControllaPeriodoPreparazione();
$_SESSION['ControllaPeriodoClickDay'] = $bando_setup->ControllaPeriodoClickDay();
$_SESSION['ControllaPeriodoErogazione'] = $bando_setup->ControllaPeriodoErogazione();
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount);
$transaction = true;
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = 'Accesso alle deroghe non consentito';
}
}
}else{
$return['esito'] = -999;
$return['erroreDescrizione'] = 'Accesso non consentito';
}
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = $resSpid['erroreDescrizione'];
}
if ($transaction) {
$return['esito'] = 1;
$return['custom'] = "quimettocustom";
$con->db_transactionCommit();
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = "Attenzione , riprovare o contattare il Personale Tecnico";
$con->db_transactionRollback();
}
return($return);
}
public static function loginSpidClickDay($codice_fiscale = "", $mobilePhone = "", $email = "", $idCard = "", $inResponseTo = "", $AuthnInstant = 0) {
global $con, $LoggedAccount, $bando_setup;
$idCardArray = explode(" ", $idCard);
$tipodocumento = $idCardArray[0];
$numerodocumento = $idCardArray[1];
/*BUG FIX TIMSPID*/
if(Utils::is_date($idCardArray[3])){
$enterilascio = $idCardArray[2];
$dataemissione = date("d-m-Y", strtotime($idCardArray[3]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[4]));
}else{
$enterilascio = $idCardArray[2]. " ".$idCardArray[3];
$dataemissione = date("d-m-Y", strtotime($idCardArray[4]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[5]));
}
$return = array();
// if(ATTIVA_CONTROLO_BANDO_LOGIN){
//
// if (!$bando_setup->ControllaPeriodoClickDay()) {
// $return['esito'] = -999;
// $return['erroreDescrizione'] = 'Il servizio non è attivo.';
// return $return;
// }
//
// }
//$con->db_transactionStart();
$transaction = false;
$codFisc = trim($codice_fiscale);
$resSpid['esito'] = 1;
if ($resSpid['esito'] == 1) {
//$id_accountCodiFis = Account::selectIdFromCodiceF($codFisc);
$account = Account::loadObjFromCodiceF($codFisc);
if ($account->ID > 0) {
// $account = new Account($id_accountCodiFis['ID']);
$account->INRESPONSETO = $inResponseTo;
$account->AUTHNINSTANT = $AuthnInstant;
//$respAccount = $account->Save();
$respAccount['esito'] = 1;
if ($respAccount['esito'] == 1) {
$LoggedAccount = $account;
/*$LoggedAccount->SchedaPersona = SchedaPersona::Load($uid_spid->CODICE_FISCALE);
$amerigo = json_encode($LoggedAccount);
$stefano = json_decode($amerigo, true);
$LoggedAccount->COGNOME = $stefano['SchedaPersona']['cognome'];
$LoggedAccount->NOME = $stefano['SchedaPersona']['nome'];*/
$LoggedAccount->CODICE_FISCALE = $codFisc;
$LoggedAccount->SPID_MOBILE_PHONE = $mobilePhone;
$LoggedAccount->SPID_EMAIL = $email;
$LoggedAccount->SPID_TIPO_DOCUMENTO = $tipodocumento;
$LoggedAccount->SPID_NUMERO_DOCUMENTO = $numerodocumento;
$LoggedAccount->SPID_ENTE_RILASCIO = $enterilascio;
$LoggedAccount->SPID_DATA_RILASCIO = $dataemissione;
$LoggedAccount->SPID_DATA_SCADENZA = $datascadenza;
$_SESSION['ID'] = $LoggedAccount->ID;
//$_SESSION['ControllaPeriodoPreparazione'] = $bando_setup->ControllaPeriodoPreparazione();
$_SESSION['ControllaPeriodoClickDay'] = $bando_setup->ControllaPeriodoClickDay();
//$_SESSION['ControllaPeriodoErogazione'] = $bando_setup->ControllaPeriodoErogazione();
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount);
$transaction = true;
}
}
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = $resSpid['erroreDescrizione'];
}
if ($transaction) {
$return['esito'] = 1;
$return['custom'] = "quimettocustom";
//$con->db_transactionCommit();
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = "Accesso non consentito";
//$con->db_transactionRollback();
}
return($return);
}
public static function loginSpidAttestati($codice_fiscale = "", $mobilePhone = "", $email = "", $idCard = "", $inResponseTo = "", $AuthnInstant = 0) {
global $con, $LoggedAccount, $bando_setup;
session_name('SICILIAPEIFE_BONUSICILIA');
session_start();
$idCardArray = explode(" ", $idCard);
$tipodocumento = $idCardArray[0];
$numerodocumento = $idCardArray[1];
/*BUG FIX TIMSPID*/
if(Utils::is_date($idCardArray[3])){
$enterilascio = $idCardArray[2];
$dataemissione = date("d-m-Y", strtotime($idCardArray[3]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[4]));
}else{
$enterilascio = $idCardArray[2]. " ".$idCardArray[3];
$dataemissione = date("d-m-Y", strtotime($idCardArray[4]));
$datascadenza = date("d-m-Y", strtotime($idCardArray[5]));
}
$return = array();
if(ATTIVA_CONTROLO_BANDO_LOGIN){
if (!$bando_setup->ControllaPeriodoAttestati()) {
$return['esito'] = -999;
$return['erroreDescrizione'] = 'Il servizio non è attivo.';
return $return;
}
}
//$con->db_transactionStart();
$transaction = false;
$codFisc = trim($codice_fiscale);
$resSpid['esito'] = 1;
if ($resSpid['esito'] == 1) {
//$id_accountCodiFis = Account::selectIdFromCodiceF($codFisc);
$account = Account::loadObjFromCodiceF($codFisc);
if ($account->ID > 0) {
// $account = new Account($id_accountCodiFis['ID']);
$account->INRESPONSETO = $inResponseTo;
$account->AUTHNINSTANT = $AuthnInstant;
//$respAccount = $account->Save();
$respAccount['esito'] = 1;
if ($respAccount['esito'] == 1) {
$LoggedAccount = $account;
/*$LoggedAccount->SchedaPersona = SchedaPersona::Load($uid_spid->CODICE_FISCALE);
$amerigo = json_encode($LoggedAccount);
$stefano = json_decode($amerigo, true);
$LoggedAccount->COGNOME = $stefano['SchedaPersona']['cognome'];
$LoggedAccount->NOME = $stefano['SchedaPersona']['nome'];*/
$LoggedAccount->CODICE_FISCALE = $codFisc;
$LoggedAccount->SPID_MOBILE_PHONE = $mobilePhone;
$LoggedAccount->SPID_EMAIL = $email;
$LoggedAccount->SPID_TIPO_DOCUMENTO = $tipodocumento;
$LoggedAccount->SPID_NUMERO_DOCUMENTO = $numerodocumento;
$LoggedAccount->SPID_ENTE_RILASCIO = $enterilascio;
$LoggedAccount->SPID_DATA_RILASCIO = $dataemissione;
$LoggedAccount->SPID_DATA_SCADENZA = $datascadenza;
$_SESSION['ID'] = $LoggedAccount->ID;
$_SESSION['ControllaPeriodoPreparazione'] = $bando_setup->ControllaPeriodoPreparazione();
$_SESSION['ControllaPeriodoAttestati'] = $bando_setup->ControllaPeriodoAttestati();
$_SESSION['LoggedAccount'] = json_encode($LoggedAccount);
$transaction = true;
}
}
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = $resSpid['erroreDescrizione'];
}
if ($transaction) {
$return['esito'] = 1;
$return['custom'] = "quimettocustom";
//$con->db_transactionCommit();
} else {
$return['esito'] = -999;
$return['erroreDescrizione'] = "Accesso non consentito";
//$con->db_transactionRollback();
}
return($return);
}
public function Save() {
global $con, $LoggedAccount;
$vars = get_object_vars($this);
unset($vars['SchedaPersona']);
unset($vars['SPID_MOBILE_PHONE']);
unset($vars['SPID_TIPO_DOCUMENTO']);
unset($vars['SPID_ENTE_RILASCIO']);
unset($vars['SPID_DATA_RILASCIO']);
unset($vars['SPID_DATA_SCADENZA']);
unset($vars['SPID_NUMERO_DOCUMENTO']);
unset($vars['NOME']);
unset($vars['COGNOME']);
unset($vars['SPID_EMAIL']);
//Utils::print_array($LoggedAccount);exit();
$sql = Utils::prepareQuery(self::TABLE_NAME, $vars);
$queryabi = $con->prepare($sql);
//Utils::print_array($LoggedAccount);exit();
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();
}
// $it['sql']=$sql;
return $it;
}
/**
* Vorifico se è istaziato
* @return type
*/
public function IsLogged() {
Utils::checkLogin();
}
public function Delete() {
return parent::_Delete(self::TABLE_NAME, "id = " . $this->id);
}
/**
* Elimina l'oggetto corrente dal database e restituisce TRUE se ha successo
*
* @return bool Risultato booleano dell'operazione
*/
public function LogicalDelete() {
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));
switch ($campo) {
default:
array_push($record, array("Campo" => $campo, "Valore" => $this->$campo));
break;
}
}
}