Ejemplo n.º 1
0
 /**
  * @param \PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params
  *
  * @throws \SoapFault
  * @throws \Exception
  * @return Etiqueta[]
  */
 public function geraDigitoVerificadorEtiquetas(\PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params)
 {
     $etiquetas = $params->getEtiquetas();
     foreach ($etiquetas as $etiqueta) {
         $etiqueta->setDv($etiqueta->getDv());
     }
     return $etiquetas;
 }
 /**
  * @param \PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params
  *
  * @return Etiqueta[]
  */
 public function execute(\PhpSigep\Model\GeraDigitoVerificadorEtiquetas $params)
 {
     $soapArgs = array('etiquetas' => array(), 'usuario' => $params->getAccessData()->getUsuario(), 'senha' => $params->getAccessData()->getSenha());
     // É necessário garantir que o array estará indexado por order natural começando do zero para setarmos os
     // DV retornados pelo webservice.
     $etiquetas = array_values($params->getEtiquetas());
     /** @var $etiqueta Etiqueta */
     foreach ($etiquetas as $etiqueta) {
         $soapArgs['etiquetas'][] = $etiqueta->getEtiquetaSemDv();
     }
     $result = new Result();
     try {
         $soapReturn = SoapClientFactory::getSoapClient()->geraDigitoVerificadorEtiquetas($soapArgs);
         if ($soapReturn && is_object($soapReturn) && $soapReturn->return) {
             if (!is_array($soapReturn->return)) {
                 $soapReturn->return = (array) $soapReturn->return;
             }
             foreach ($soapReturn->return as $k => $dv) {
                 $etiquetas[$k]->setDv((int) $dv);
             }
             $result->setResult($etiquetas);
         } else {
             $result->setErrorCode(0);
             $result->setErrorMsg('A resposta do Correios não está no formato esperado. Resposta recebida: "' . $soapReturn . '"');
         }
     } catch (\Exception $e) {
         if ($e instanceof \SoapFault) {
             $result->setIsSoapFault(true);
             $result->setErrorCode($e->getCode());
             $result->setErrorMsg(SoapClientFactory::convertEncoding($e->getMessage()));
         } else {
             $result->setErrorCode($e->getCode());
             $result->setErrorMsg($e->getMessage());
         }
     }
     return $result;
 }