/**
* @param \PhpSigep\Model\AbstractModel|\PhpSigep\Model\SolicitaEtiquetas $params
*
* @throws \PhpSigep\Services\Exception
* @throws InvalidArgument
* @return BuscaClienteResult
*/
public function execute(AbstractModel $params)
{
if (!$params instanceof \PhpSigep\Model\AccessData) {
throw new InvalidArgument();
}
$soapArgs = array('idContrato' => $params->getNumeroContrato(), 'idCartaoPostagem' => $params->getCartaoPostagem(), 'usuario' => $params->getUsuario(), 'senha' => $params->getSenha());
$result = new Result();
try {
if (!$params->getUsuario() || !$params->getSenha() || !$params->getNumeroContrato() || !$params->getCartaoPostagem()) {
throw new Exception('Para usar este serviço você precisa setar o nome de usuário, a senha, o numero ' . 'do contrato e o número do cartão de postagem.');
}
$r = SoapClientFactory::getSoapClient()->buscaCliente($soapArgs);
if (!$r || !is_object($r) || !isset($r->return) || $r instanceof \SoapFault) {
if ($r instanceof \SoapFault) {
throw $r;
}
throw new \Exception('Erro ao consultar os dados do cliente. Retorno: "' . $r . '"');
}
$result->setResult(new BuscaClienteResult((array) $r->return));
} 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;
}