95 lines
3.2 KiB
PHP
95 lines
3.2 KiB
PHP
<?php
|
|
|
|
class App_Service_FeAuthInfo
|
|
{
|
|
private $_model;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->_model = new Application_Model_Generic();
|
|
}
|
|
|
|
/**
|
|
* Funzione per il recupero delle credenziali di accesso al servizio fatturaB2B
|
|
*
|
|
* Le cerca prima nella tabella di appoggio interna fe_authdata
|
|
* se non le trova le cerca tramite il collegamento al sito fattuab2b.it e le memorizza per i successvi utilizzi
|
|
*
|
|
* @param string $piva
|
|
* @return mixed
|
|
* @throws App_Controller_Errors_WebServiceError
|
|
*/
|
|
public function getFeAuthCredential(string $piva)
|
|
{
|
|
$piva = str_replace('IT','', $piva);
|
|
$credenziali = $this->_model->getByColumnName('FeAuthData', 'PartitaIva', $piva);
|
|
|
|
if (!$credenziali) { // se non le trovo le cerco sul servizio del sito fattura b2b
|
|
$credenziali = $this->getFeAuthFatturaB2B($piva);
|
|
}
|
|
|
|
return $this->decriptaCredenziali($credenziali);
|
|
}
|
|
|
|
/**
|
|
* Recuper le credenziali dal sito fatturab2b.it e nel caso non sono presenti le memorizza sulla tabella delle credenziali
|
|
* @param $piva
|
|
* @return array|array[]
|
|
* @throws App_Controller_Errors_WebServiceError
|
|
*/
|
|
private function getFeAuthFatturaB2B($piva)
|
|
{
|
|
|
|
//Controllo se il cliente ha il servizio di fatturazione elettronica attivo sul sito FatturaB2B
|
|
$ApiFatturaB2B = new App_Model_CurlHttpClient('https://www.fatturab2b.it/services/checkserviziofe');
|
|
$credenzialiFe = $ApiFatturaB2B->getCall(array('piva' => $piva, 'info' => 1));
|
|
|
|
if (!$credenzialiFe || !$credenzialiFe['success'] || !$credenzialiFe['data']['StatoServizio']) {
|
|
throw new App_Controller_Errors_WebServiceError("Credenziali non esistenti o servizio non attivo per la partita iva $piva");
|
|
}
|
|
|
|
$credenziali = $credenzialiFe['data'];
|
|
$credenziali['PartitaIva'] = str_replace('IT','', $credenziali['PartitaIva']);
|
|
|
|
return $this->insertUpdateFeAuthRecord($credenziali);
|
|
}
|
|
|
|
/**
|
|
* Memorizza le credenziali nella tabella di appoggio fe_authdata
|
|
*
|
|
* @param $credenziali
|
|
* @return array|array[]
|
|
* @throws App_Controller_Errors_WebServiceError
|
|
* @throws Zend_Form_Exception
|
|
*/
|
|
private function insertUpdateFeAuthRecord($credenziali)
|
|
{
|
|
|
|
$feAuthDataForm = new Application_Form_Admin_Index_FeAuthData_Add();
|
|
if(!$feAuthDataForm->isValid($credenziali)){
|
|
throw new App_Controller_Errors_WebServiceError("Dati da inserire nel fe auth data non validi");
|
|
}
|
|
|
|
$credenziali = $feAuthDataForm->getValues();
|
|
$credenziali['DataUpdate'] = date('Y-m-d H:i:s');
|
|
|
|
$this->_model->deleteWhere('FeAuthData', array("PartitaIva = '?'" => $credenziali['PartitaIva']));
|
|
$credenziali['id'] = $this->_model->insert('FeAuthData', $credenziali);
|
|
|
|
return $credenziali;
|
|
}
|
|
|
|
/**
|
|
* Decripta le credenziali e le restituisce
|
|
*
|
|
* @param $credenziali
|
|
* @return mixed
|
|
*/
|
|
private function decriptaCredenziali($credenziali){
|
|
$credenziali['Password'] = App_Service_CodificaPiva::decriptaHex($credenziali['Password']);
|
|
return $credenziali;
|
|
}
|
|
|
|
|
|
}
|