<?php

/**
* Classe per ottenere i dettagli del campionamento in un RDP
* 
*/
class rdp {

	var $dbh;


	//var $protocol;
	var $url;


	var $dbhost;
	var $dbuser;
	var $dbpwd;
	
	
	var $wsclient = null;
	
	var $wsclientUO = null;
	
	
	/**
     * Costruttore della classe
     * 
     * Inizializzo il db e il ws client
     *
     * @param  int    $id_utente id dell'utente
     * @param  int    $id_azione id azione
     * @param  string $ip ip del client
     * @param  object $oggetto Oggetto sulla quale viene eseguita l'azione
    */
 
	public function __construct() 
	{
		require('dbaccess.inc');
		
		$this->dbhost 	= $dbhost;
		$this->dbuser 	= $dbuser;
		$this->dbpwd 	= $dbpwd;
		//$this->protocol = $protocol;
		$this->username = $username;
		$this->password = $password;
		$this->url 		= $url;
		
		$this->dbh = mysql_connect($this->dbhost, $this->dbuser, $this->dbpwd);
		if ($this->dbh == false)
		{
			throw new Exception('Errore connessione database');
		}
		
		mysql_selectdb($dbname);
		
		mysql_query('SET NAMES UTF8');
		
		// WS CLIENT
		
		//Non possiamo utilizzare quello sotto perchè siamo sul server OEVR e il wsdl sotto punta al'indirizzo esterno, mentre dalla rete OEVR si
		//deve usare l'indirizzo Interno 10.100.100.23 ---> SVILUPPO
		//deve usare l'indirizzo Interno 10.100.100.80 ---> PRODUZIONE
		//$wsdl = $this->protocol . '://' . $this->username . ':' . $this->password . '@' . $this->url . 'gestioneCM.wsdl';
		
		// Ne creiamo uno in locale che punta all'indirizzo interno 
		$wsdl='ws/gestioneCM.wsdl';
		
		$this->wsclient = new SoapClient(
			$wsdl,
			array(
				'encoding'  =>'UTF-8',
				'login'     => $this->username,
				'password'  => $this->password,
				'trace'     => 1
			)
		);
		
		// qQuesto wdsl serve per la gestione delle unità operative e quindi per il servizio estraiCOD_UO
		$wsdlUO='ws/gestioneUO.wsdl';
		
		$this->wsclientUO = new SoapClient(
			$wsdlUO,
			array(
				'encoding'  =>'UTF-8',
				'login'     => $this->username,
				'password'  => $this->password,
				'trace'     => 1
			)
		);
		
		
			
	}
	
	public function verifica_presenza_campionamento($numero_conferimento,$anno_conferimento) 
	{
          	try 
          	{
			     $lista_risultati = $this->wsclient->estraiNUM_CONF($numero_conferimento, $anno_conferimento);
			        
			     if($lista_risultati)
			     {
			     	return true;
			     }
			     else
			     {
			     	return false;
			     }     
       		}	
			catch (SoapFault $exception)
			{
			    echo $exception;
			}
    }

	public function verifica_presenza_campionamento_con_ticket($ticket_darwin)
	{
          	try 
          	{
			     $lista_risultati = $this->wsclient->estraiCONF_ID($ticket_darwin);
			     
			    // echo '<pre>';
			    // print_r($lista_risultati);
			    // echo '</pre>';
			     
			     if($lista_risultati)
			     {
			     	return true;
			     }
			     else
			     {
			     	return false;
			     }
       		}	
			catch (SoapFault $exception)
			{
			    echo $exception;
			}       
 		
    }
	
    //funzione per l'acquisizione dei dettagli del campionamento
   
	
	public function dettagli_campionamento($numero_conferimento,$anno_conferimento,$id_rdp) 
	{
          	 try 
          	 {
			     $lista_campionamenti = $this->wsclient->estraiNUM_CONF($numero_conferimento, $anno_conferimento);
          	 }
          	catch (SoapFault $exception)
		{
			
		}   
			// echo '<pre>';
		     //print_r($lista_campionamenti);
		     //echo '</pre>';
		     
		     foreach ($lista_campionamenti as $campionamento)
		     {
			     $numero_conferimento = $campionamento-> numero_conferimento;	
			     $anno = $campionamento -> anno_conferimento;
			     $codice_proprietario = $campionamento -> prop_codice;
			     $ragione_sociale_proprietario = $campionamento-> prop_ragsoc;	
			     $conferente = $campionamento-> confer_ragsoc;	
			     $finalita = $campionamento -> descr_finalita;
			     $veterinario = $campionamento -> veter_ragsoc;
			     $numero_campioni = $campionamento -> nr_campioni;
			     $materiale = $campionamento -> materiale;
			     $specie = $campionamento -> specie;
			     $matrice = $campionamento -> matrice;
			     $data_prelievo = $campionamento -> data_prelievo;
			     $data_inserimento_record = $campionamento -> data_inserimento_record;
			     $destinatario = $campionamento -> destrdp_ragsoc;
			     
			     // Se c'è la MATRICE (muscolo di pollo) significa che NON ci sono materiale e specie
			     if($matrice)
			     {
			     	$materiale ='';
			     	$specie ='';
			     }
			     //Altrimenti se NON c'è la MATRICE significa che ci sono materiale e specie
			     else
			     {
			     	$matrice ='';
			     }
			     
			                                                                                                                          
          		 $pos = strpos($codice_proprietario, 'BS');
			 $pos_1 = strpos($codice_proprietario, 'BG');
			 $pos_2 = strpos($codice_proprietario, 'MI');
			 $pos_3 = strpos($codice_proprietario, 'SO');
			 $pos_4 = strpos($codice_proprietario, 'PV');
			 $pos_5 = strpos($codice_proprietario, 'LO');
			 $pos_6 = strpos($codice_proprietario, 'LC');
			 $pos_7 = strpos($codice_proprietario, 'CO');
			 $pos_8 = strpos($codice_proprietario, 'VA');
			 $pos_9 = strpos($codice_proprietario, 'MN');
			 $pos_10 = strpos($codice_proprietario, 'CR');
			 $pos_11 = strpos($codice_proprietario, 'MB');                                                                                                             
                                                                                                                                                                                 
                  //Se il codice proprietario è già il codice allevamento (non devo fare il cinema)                                                                                                                                                    
                 if( $pos !== false || $pos_1 !== false || $pos_2 !== false || $pos_3 !== false || $pos_4 !== false || $pos_5 !== false || $pos_6 !== false || $pos_7 !== false || $pos_8 !== false || $pos_9 !== false || $pos_10 !== false || $pos_11 !== false)  
                 {
                 	$codice_entita = $codice_proprietario;
                 }
                 
                 else 
                 {
			// Verifico se il Codice del proprietario è un CODICE UO di un'unità operativa o di un allevamento
			// Invoco il WebServices estrai_COD_UO --->> se trovo il codice_azienda_significa che è un ALLEVAMENTO
			// se NON c'è è un'unità operativa e quindi lascio come codice azienda quello che trovo in $campionamento -> prop_codice;
				     
				     
			$codice_entita = '';
				    
			try 
			{
				$azienda = $this->wsclientUO->estraiCOD_UO($codice_proprietario);
				if ($azienda -> codice_azienda)
				{
				     	$codice_entita = $azienda -> codice_azienda;
					
				}	 
				     	 
			}
			catch (SoapFault $exception)
			{
				$exception->__toString();	
			}  
				 
                 }


		if($conferente != '' || $destinatario !='')
		{
			$conferente = addslashes($conferente);
			$destinatario = addslashes($destinatario);
                	$sql_conferente = "SELECT conferente_rdp, tabella_rdp FROM conferenti WHERE conferente_rdp='".$conferente."' OR conferente_rdp ='".$destinatario."';";
		echo $sql_conferente;
                        $result = mysql_query($sql_conferente);
                	$row = mysql_fetch_row($result);
                        $tabella_rdp = $row[1];
                 }
		 
                 
                 if ($tabella_rdp && $tabella_rdp != "")
		 {
                 
                    $query = "INSERT INTO ".$tabella_rdp."
               	    (
               	     numero_conferimento,
               	    anno,
               	    codice_proprietario,
               	    ragione_sociale_proprietario,
               	    conferente,
               	    finalita,
		    veterinario,
               	    numero_campioni,
               	    matrice,
               	    materiale,
               	    specie,
               	    data_prelievo,
		    data_inserimento_record,
		    id_rdp
               	    ) 
               	    VALUES
               	    ( 
               	   ".$numero_conferimento.",
               	   ".$anno.",
               	   '".$codice_entita."',
               	   '".addslashes($ragione_sociale_proprietario)."',
               	   '".addslashes($conferente)."',
               	   '".addslashes($finalita)."',
		   '".addslashes($veterinario)."',
               	   ".$numero_campioni.",
               	   '".addslashes($matrice)."',
               	   '".addslashes($materiale)."',
               	   '".addslashes($specie)."',
               	   '".$data_prelievo."',
		   '".$data_inserimento_record."',
		   			'".$id_rdp."'
              	   )";
		   
		  // echo $query;
               
              	    $result = mysql_query($query);
               
                    if (!$result )
                    {
                      echo $query . ':' . mysql_error() ."\n";
                      exit;
                    }
		    else 
		    {
			
			return true;
		    }			
          	} 
		else
		{ 
		    echo "Tabella non riconosciuta";
		
		/* Se non trova la tabella conferenti per quel conferente, scrive un record nella tabella conferenti_errori
		*	Matteo, 26.03.2012
		*/
	    		$query = "INSERT INTO conferenti_errori
	               	     (
		               	 n_conferimento,
		               	 anno,
		               	 conferente,
		               	 time_modifica,
				 record_attivo
	               	    ) 
	               	    VALUES
	               	    ( 
		               	   ".$numero_conferimento.",
		               	   ".$anno.",
				   '".addslashes($conferente)."',
				   '".date("Y-m-d H:i:s")."',
				   '1'
	              	    )";
	              	    $result = mysql_query($query);
			    echo $result."\n";
		    return false;
		}
          
    	    }
 		
	}
   
   
	public function dettagli_campionamento_con_ticket($ticket_darwin,$id_rdp) 
	{
          	 try 
          	 {
			$lista_campionamenti = $this->wsclient->estraiCONF_ID($ticket_darwin);
          	 }
          	catch (SoapFault $exception)
	        {
			
                }   

		foreach ($lista_campionamenti as $campionamento)
		{
			     $numero_conferimento = $campionamento-> numero_conferimento;	
			     $anno = $campionamento -> anno_conferimento;
			     $codice_proprietario = $campionamento -> prop_codice;
			     $ragione_sociale_proprietario = $campionamento-> prop_ragsoc;	
			     $conferente = $campionamento-> confer_ragsoc;	
			     $finalita = $campionamento -> descr_finalita;
			     $veterinario = $campionamento -> veter_ragsoc;
			     $numero_campioni = $campionamento -> nr_campioni;
			     $materiale = $campionamento -> materiale;
			     $specie = $campionamento -> specie;
			     if($campionamento -> matrice) $matrice = $campionamento -> matrice;
			     $data_prelievo = $campionamento -> data_prelievo;
			     $data_inserimento_record = $campionamento -> data_inserimento_record;
			     $destinatario = $campionamento -> destrdp_ragsoc;
			     
			     // Se c'è la MATRICE (muscolo di pollo) significa che NON ci sono materiale e specie
			     if($matrice)
			     {
			     	$materiale ='';
			     	$specie ='';
			     }
			     //Altrimenti se NON c'è la MATRICE significa che ci sono materiale e specie
			     else
			     {
			     	$matrice ='';
			     }
			     
			                                                                                                                          
          		$pos = strpos($codice_proprietario, 'BS');
			$pos_1 = strpos($codice_proprietario, 'BG');                                                                                                       
		        $pos_2 = strpos($codice_proprietario, 'MI');                                                                                                       
			$pos_3 = strpos($codice_proprietario, 'SO');                                                                                                       
			$pos_4 = strpos($codice_proprietario, 'PV');                                                                                                       
			$pos_5 = strpos($codice_proprietario, 'LO');                                                                                                       
			$pos_6 = strpos($codice_proprietario, 'LC');                                                                                                       
			$pos_7 = strpos($codice_proprietario, 'CO');                                                                                                       
			$pos_8 = strpos($codice_proprietario, 'VA');                                                                                                       
			$pos_9 = strpos($codice_proprietario, 'MN');                                                                                                       
			$pos_10 = strpos($codice_proprietario, 'CR');                                                                                                      
			$pos_11 = strpos($codice_proprietario, 'MB');                                                                                                             
                                                                                                                                                                                 
                  //Se il codice proprietario è già il codice allevamento (non devo fare il cinema)                                                                                                                                                    
                 if( $pos !== false || $pos_1 !== false || $pos_2 !== false || $pos_3 !== false || $pos_4 !== false || $pos_5 !== false || $pos_6 !== false || $pos_7 !== false || $pos_8 !== false || $pos_9 !== false || $pos_10 !== false || $pos_11 !== false)  
                 {
                 	$codice_entita = $codice_proprietario;
                 }
                 
                 else 
                 {
			// Verifico se il Codice del proprietario è un CODICE UO di un'unità operativa o di un allevamento
			// Invoco il WebServices estrai_COD_UO --->> se trovo il codice_azienda_significa che è un ALLEVAMENTO
			// se NON c'è è un'unità operativa e quindi lascio come codice azienda quello che trovo in $campionamento -> prop_codice;
				     
				     
			$codice_entita = '';
				    
			try 
			{
				$azienda = $this->wsclientUO->estraiCOD_UO($codice_proprietario);
					
				if ($azienda -> codice_azienda)
				{
				     	 $codice_entita = $azienda -> codice_azienda;
				}	 
				     	 
		        }
			catch (SoapFault $exception)
			{
			    echo $exception->__toString();
			}  
				 
                 }
                 
                if($conferente != '' || $destinatario != '')
		{
			$conferente = addslashes($conferente);                                                                                             
			$destinatario = addslashes($destinatario);     
                 	$sql_conferente = "SELECT conferente_rdp, tabella_rdp FROM conferenti WHERE conferente_rdp='".$conferente."' OR conferente_rdp='".$destinatario."';";
                 	
                 	$result = mysql_query($sql_conferente);
					$row = mysql_fetch_row($result);
					$tabella_rdp = $row[1];
					
                 }
                 
		if ($tabella_rdp && $tabella_rdp != "")
		{
	               	     $query = "INSERT INTO ".$tabella_rdp."
	               	     (
		               	 numero_conferimento,
		               	 anno,
		               	 codice_proprietario,
		               	 ragione_sociale_proprietario,
		               	 conferente,
		               	 finalita,
				 veterinario,
		               	 numero_campioni,
		               	 matrice,
		               	 materiale,
		               	 specie,
		               	 data_prelievo,
				 data_inserimento_record,
				 id_rdp
	               	    ) 
	               	    VALUES
	               	    ( 
		               	   ".$numero_conferimento.",
		               	   ".$anno.",
		               	   '".$codice_entita."',
		               	   '".addslashes($ragione_sociale_proprietario)."',
		               	   '".addslashes($conferente)."',
		               	   '".addslashes($finalita)."',
				   '".addslashes($veterinario)."',
		               	   ".$numero_campioni.",
		               	   '".addslashes($matrice)."',
		               	   '".addslashes($materiale)."',
		               	   '".addslashes($specie)."',
		               	   '".$data_prelievo."',
				   '".$data_inserimento_record."',
				   '".$id_rdp."'
	              	    )";
	              	    $result = mysql_query($query);
	               
	                    if ( !$result )
	                    {
	                         echo $query . ':' . mysql_error() ."\n";
	                        exit;
	                    }
			    else return true;
		
		} 
		else
		{ 
		/* Se non trova la tabella conferenti per quel conferente, scrive un record nella tabella conferenti_errori
		*	Matteo, 26.03.2012
		*/
	    		$query = "INSERT INTO conferenti_errori
	               	     (
		               	 n_conferimento,
		               	 anno,
		               	 conferente,
		               	 time_modifica,
				 record_attivo
	               	    ) 
	               	    VALUES
	               	    ( 
		               	   ".$numero_conferimento.",
		               	   ".$anno.",
				   '".addslashes($conferente)."',
				   '".date("Y-M-d H.m.s")."',
				   '1'
	              	    )";
	              	    $result = mysql_query($query);
			    echo $result."\n";
		
		    return false;
		}
          }     
 		
   }
}

?>
