WSCOMUN  2.1.0
Web Services Comunes para PHP/GVHidra
WSClientRegDepartamental.php
1 <?php
5 use ArrayObject;
6 use Exception;
7 use SoapClient;
8 use SoapVar;
9 
21 {
22 
30  private function createClient() {
31  $opcionesClienteWS = array (
32  'soap_version' => SOAP_1_1, //SOAP 1.2
33  'user_agent' => 'WSSSoapClient',
34  'exceptions' => true,
35  'cache_wsdl' => self::$MYSOAPOP_WSDL_CACHE,
36  'trace' => self::$MYSOAPOP_TRACE
37  );
38 
39  $this->disableWSSecurity();
40  $this->__clienteOn(self::KEYCLIENTE_REGDEPARTAMENTAL, false, $opcionesClienteWS);
41  $clienteWS = $this->__getClient(self::KEYCLIENTE_REGDEPARTAMENTAL);
42 
43  return $clienteWS;
44  }
45 
46 
58  private function doConsultaRD($codigoRegistro, $fechaRegistro, $fieldName, $ns) {
59  $oAux = new RegistroDepartamentalCodigoType();
60  $oAux->setCodigoRegistro($codigoRegistro);
61  $oAux->setFechaRegistro($fechaRegistro);
62  $regDepWS = $oAux->toSoap($fieldName, $ns);
63 
64 
65  $mainWS = new ArrayObject();
66  $mainWS->append($regDepWS);
67  return $mainWS;
68  }
69 
70 
80  public function consultaHistorico($codigoRegistro, $fechaRegistro)
81  {
82  try
83  {
84  // Crea y configura el cliente WSSSoapClient
86  $clienteWS = $this->createClient();
87 
88  // Nivel de peticion
89  $mainWS = $this->doConsultaRD($codigoRegistro, $fechaRegistro, 'codigoRegistroDepartamental', self::$NAMESPACE_REGDEPARTAMENTAL);
90 
91  // Realiza la peticion
92  $miSoapRQ = new SoapVar($mainWS, SOAP_ENC_OBJECT,null,null, 'consultaHistorico', self::$NAMESPACE_REGDEPARTAMENTAL);
93  $respuesta = $clienteWS->consultaHistorico($miSoapRQ);
94 
95  // El código no debería acceder a este punto, se lanza excepción si se alcanza este codigo
96  throw new Exception('Formato de las respuestas modificado. Debe modificarse el tratamiento de las respuestas del WS (MTOM)');
97  }
98  catch (Exception $e)
99  {
100  // Obtiene el array con la respuesta o lanza excepcion
101  $vRetorno = $this->tratarInnerException($clienteWS, $e);
102 
103  // Convierte en el objeto apropiado, y lo devuelve
104  $oRetorno = consultaHistoricoResponse::fromSoap($vRetorno);
105  return $oRetorno;
106  }
107 
108  }//consultaHistorico
109 
110 
121  public function consultaRegistroDepartamental($codigoRegistro, $fechaRegistro, $devolverDocumentos)
122  {
123  try
124  {
125  // Crea y configura el cliente WSSSoapClient
126  $clienteWS = $this->createClient();
127 
128  // Nivel de peticion
129  $mainWS = $this->doConsultaRD($codigoRegistro, $fechaRegistro, 'codigoRegistroDepartamental', self::$NAMESPACE_REGDEPARTAMENTAL);
130  $mainWS->append(new SoapVar($devolverDocumentos, XSD_BOOLEAN, null, null,'devolverDocumentos', self::$NAMESPACE_REGDEPARTAMENTAL));
131 
132  // Realiza la peticion
133  $miSoapRQ = new SoapVar($mainWS, SOAP_ENC_OBJECT,null,null, 'consultaRegistroDepartamental', self::$NAMESPACE_REGDEPARTAMENTAL);
134  $respuesta = $clienteWS->consultaRegistroDepartamental($miSoapRQ);
135 
136  // El código no debería acceder a este punto, se lanza excepción si se alcanza este codigo
137  throw new Exception('Formato de las respuestas modificado. Debe modificarse el tratamiento de las respuestas del WS (MTOM)');
138  }
139  catch (Exception $e)
140  {
141  // Obtiene el array con la respuesta o lanza excepcion
142  $vRetorno = $this->tratarInnerException($clienteWS, $e);
143 
144  // Convierte en el objeto apropiado, y lo devuelve
145  $oRetorno = consultaRegistroDepartamentalResponse::fromSoap($vRetorno);
146  return $oRetorno;
147  }
148  }//consultaRegistroDepartamental
149 
150 
176  public function creacionRegistroDepartamental($codigoOrganismoUnidadDepartamental, $codigoUnidadDepartamental,
177  $tipoRegistroDepartamental, $codigoAsuntoHabitual, $asunto, $observacionesDepartamentales,
178  $observacionesGenerales, $datosIdentificativos, $destinos, $datosRegistroGeneralSalida,
179  $otraUnidadDeProcedencia, $descripcionOtraUnidadDeProcedencia, $datosRegistroDepartamentalOrigen,
180  $tipoTransporte, $datosExpediente, $documentos)
181  {
182  try
183  {
184  // Crea y configura el cliente WSSSoapClient
185  $clienteWS = $this->createClient();
186 
187  // Nivel de peticion
188  $newItem = new creacionRegistroDepartamental();
189 
190  $newItem->setCodigoOrganismoUnidadDepartamental($codigoOrganismoUnidadDepartamental);
191  $newItem->setCodigoUnidadDepartamental($codigoUnidadDepartamental);
192  $newItem->setTipoRegistroDepartamental($tipoRegistroDepartamental);
193  if (isset($codigoAsuntoHabitual)) {
194  $newItem->setCodigoAsuntoHabitual($codigoAsuntoHabitual);
195  }
196  $newItem->setAsunto($asunto);
197  if (isset($observacionesDepartamentales)) {
198  $newItem->setObservacionesDepartamentales($observacionesDepartamentales);
199  }
200  if (isset($observacionesGenerales)) {
201  $newItem->setObservacionesGenerales($observacionesGenerales);
202  }
203  $newItem->setDatosIdentificativos($datosIdentificativos);
204  if (isset($destinos)) {
205  $newItem->setDestinos($destinos);
206  }
207  if (isset($datosRegistroGeneralSalida)) {
208  $newItem->setDatosRegistroGeneralSalida($datosRegistroGeneralSalida);
209  }
210  if (isset($otraUnidadDeProcedencia)) {
211  $newItem->setOtraUnidadDeProcedencia($otraUnidadDeProcedencia);
212  }
213  if (isset($descripcionOtraUnidadDeProcedencia)) {
214  $newItem->setDescripcionOtraUnidadDeProcedencia($descripcionOtraUnidadDeProcedencia);
215  }
216  if (isset($datosRegistroDepartamentalOrigen)) {
217  $newItem->setDatosRegistroDepartamentalOrigen($datosRegistroDepartamentalOrigen);
218  }
219  if (isset($tipoTransporte)) {
220  $newItem->setTipoTransporte($tipoTransporte);
221  }
222  if (isset($datosExpediente)) {
223  $newItem->setDatosExpediente($datosExpediente);
224  }
225  if (isset($documentos)) {
226  $newItem->setDocumentos($documentos);
227  }
228 
229  // Realiza la peticion
230  $miSoapRQ = $newItem->toSoap('creacionRegistroDepartamental', self::$NAMESPACE_REGDEPARTAMENTAL);
231  $respuesta = $clienteWS->creacionRegistroDepartamental($miSoapRQ);
232 
233  // El código no debería acceder a este punto, se lanza excepción si se alcanza este codigo
234  throw new Exception('Formato de las respuestas modificado. Debe modificarse el tratamiento de las respuestas del WS (MTOM)');
235  }
236  catch (Exception $e)
237  {
238  // Obtiene el array con la respuesta o lanza excepcion
239  $vRetorno = $this->tratarInnerException($clienteWS, $e);
240 
241  // Convierte en el objeto apropiado, y lo devuelve
242  $oRetorno = creacionRegistroDepartamentalResponse::fromSoap($vRetorno);
243  return $oRetorno;
244  }
245  }//consultaRegistroDepartamental
246 
247 
255  private function tratarInnerException($clienteWS, $e)
256  {
257  // Comprobamos si estamos ante excepcion MTOM
258  $mensaje = $e->getMessage();
259  $mensaje = trim(strtolower($mensaje));
260  switch ($mensaje)
261  {
262  case 'looks like we got no xml document' :
263  // Obtiene la respuesta
264  $response = $clienteWS->__getLastResponse();
265  $vRetorno = $this->tratarMTOMEstandar($response);
266  return $vRetorno;
267  break;
268 
269  default:
270  $this->tratarExcepcionEstandar($e, $clienteWS);
271  break;
272  }
273  }//tratarInnerException
274 }
275 
276 ?>
tratarMTOMEstandar($response, $itemToReturn=null)
creacionRegistroDepartamental($codigoOrganismoUnidadDepartamental, $codigoUnidadDepartamental, $tipoRegistroDepartamental, $codigoAsuntoHabitual, $asunto, $observacionesDepartamentales, $observacionesGenerales, $datosIdentificativos, $destinos, $datosRegistroGeneralSalida, $otraUnidadDeProcedencia, $descripcionOtraUnidadDeProcedencia, $datosRegistroDepartamentalOrigen, $tipoTransporte, $datosExpediente, $documentos)
__clienteOn($tipo, $trazabilidadPai=true, $opcionesClienteWS=null)
consultaRegistroDepartamental($codigoRegistro, $fechaRegistro, $devolverDocumentos)