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