diff --git a/includes/graydon/graydonws.php b/includes/graydon/graydonws.php index 7627cf087..cfd4006d1 100644 --- a/includes/graydon/graydonws.php +++ b/includes/graydon/graydonws.php @@ -108,6 +108,8 @@ define('GRAYDON_WSDL', realpath(dirname(__FILE__)).'/GraydonCompanyData.wsdl'); define('USER_PROFILE','SESS38R7'); define('PASSWORD','E88MSU4'); +require_once realpath(dirname(__FILE__)).'/wsfunctions.php'; + $options = array('trace' => 1); //$options = array('trace' => 1, 'features' => SOAP_SINGLE_ELEMENT_ARRAYS); // Create a soap client diff --git a/includes/graydon/wsfunctions.php b/includes/graydon/wsfunctions.php index 1d48d249d..020fd5fe2 100644 --- a/includes/graydon/wsfunctions.php +++ b/includes/graydon/wsfunctions.php @@ -21,10 +21,147 @@ getCompanyReports */ +function getCompanyMatchIdentifiers($pays){ + global $firephp, $graydon, $authentication; + + $firephp->info('Méthode getCompanyMatchIdentifiers'); + + setDbConn('graydon'); + $q = Doctrine_Query::create() + ->from('Matchidentifiers') + ->where('country = ?', $pays); + + $matchidentifiers = new Matchidentifiers(); + $matchidentifiers = $q->fetchOne(); + + /** Recup des types d'identifiants pour le pays **/ + if($matchidentifiers == FALSE){ + //Récupération des intitulés identifiant + $request = new StdClass(); + $request->Authentication_Parameters = $authentication; + $request->Country = $pays; + $firephp->log($request,'REQUETE CompanyMatchIdentifier'); + try + { + $result = $graydon->getCompanyMatchIdentifiers($request); + //Enregistrement de l'action dans les logs + $transactionIdentifier = $result->Service_Log->TransactionIdentifier; + $sessionID = $result->Service_Log->SessionID; + + graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyMatchIdentifiers', $transactionIdentifier, $sessionID); + + //Log de la requete dans la bdd + $log = new Requetelog(); + $log->login = $_SESSION['tabInfo']['login']; + $log->action = 'getCompanyMatchIdentifiers'; + $log->request = serialize($request); + $log->transactionIdentifier = $transactionIdentifier; + $log->sessionID = $sessionID; + $log->mode = $mode; + $log->save(); + + $count = count($result->CompanyMatchIdentifiers); + if ($count>1){ + $tabIdentifiers = $result->CompanyMatchIdentifiers->CompanyMatchIdentifier->CompanyIdentifier; + }elseif($count==1){ + $tabIdentifiers[] = $result->CompanyMatchIdentifiers->CompanyMatchIdentifier->CompanyIdentifier; + } + //Stockage du résultat de la méthode en cache + $matchidentifiers = new Matchidentifiers(); + $matchidentifiers->country = $pays; + $matchidentifiers->identifiers = serialize($tabIdentifiers); + $matchidentifiers->replace(); + + }catch( SoapFault $fault ){ + $code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode; + $text = $fault->detail->GraydonCompanyData_Fault->FaultMessage; + $firephp->log($text,'texterror'); + require_once 'graydon/graydon_error.php'; + if(graydon_error($code, $text)!=FALSE){ + if($code=='CWS0112'){ + //Stockage du résultat de la méthode en cache + $matchidentifiers = new Matchidentifiers(); + $matchidentifiers->country = $pays; + $matchidentifiers->identifiers = serialize(false); + $matchidentifiers->replace(); + } + }else{ + graydon_processSoapFault($graydon,$fault,$tabInfo); + } + } + }else{ + $firephp->info('tabIdentifiers pris dans la bdd'); + $tabIdentifiers = unserialize($matchidentifiers->identifiers); + } + return $tabIdentifiers; +} - - +function getCompanyProducts($identifier){ + global $firephp, $graydon, $authentification; + + setDbConn('graydon'); + $q = Doctrine_Query::create() + ->from('Companyproducts') + ->where('identifiers = ?', $identifier); + + $companyproducts = new Companyproducts(); + $companyproducts = $q->fetchOne(); + $firephp->log($companyproducts->updated_at,'date'); + $now = mktime(date('G'), date('i'), date('s'), date("m") , date("d"), date("Y")); + if($companyproducts == FALSE){ + $request = new StdClass(); + $request->Authentication_Parameters = $authentication; + $request->CompanyMatchIdentifier = $identifier; + try { + // Make a request on the web service + $result = $graydon->getCompanyProducts($request); + + //Enregistrement de l'action dans les logs + $transactionIdentifier = $result->Service_Log->TransactionIdentifier; + $sessionID = $result->Service_Log->SessionID; + graydonRequeteLog($_SESSION['tabInfo']['login'], $page, 'getCompanyProducts', $transactionIdentifier, $sessionID); + + //Log de la requete dans la bdd + $log = new Requetelog(); + $log->login = $_SESSION['tabInfo']['login']; + $log->action = 'getCompanyProducts'; + $log->request = serialize($request); + $log->transactionIdentifier = $transactionIdentifier; + $log->sessionID = $sessionID; + $log->mode = $mode; + $log->save(); + + $firephp->log($result,'result'); + + //Sauvegarde dans la bdd + $companyproducts = new Companyproducts(); + $companyproducts->identifiers = $identifier; + $companyproducts->company = serialize($result->Company); + $companyproducts->products = serialize($result->Products); + $companyproducts->replace(); + + //Extraction + $company = $result->Company; + $products = $result->Products->Product; + + }catch( SoapFault $fault ){ + $code = $fault->detail->GraydonCompanyData_Fault->FaultReturnCode; + $text = $fault->detail->GraydonCompanyData_Fault->FaultMessage; + $firephp->log($text,'texterror'); + require_once 'graydon/graydon_error.php'; + if(graydon_error($code, $text)==FALSE){ + graydon_processSoapFault($graydon,$fault,$tabInfo); + } + } + }else{ + $company = unserialize($companyproducts->company); + $products = unserialize($companyproducts->products); + $products = $products->Product; + } + + return array('Company' => $company, 'Products' => $products); +} ?> \ No newline at end of file