<repo_name>dca-araujo/lib-SNRHos<file_sep>/src/libSNRHos.class.php
<?php
/**
 * Biblioteca mínima para atender envios de ficha eletrônica, checkin e checkout
 * de hóspedes
 * @author Airton (about.me/airton <EMAIL>)
 */
class libSNRHos {
    
    const   FalhaCriarSoapClient        = 1;
    const   FalhaInserirFicha           = 2;
    const   FalhaAtualizarFicha         = 3;
    const   FalhaCheckin                = 4;
    const   FalhaCheckout               = 5;
    
    
    private $chave;
    private $wsld_url = 'http://fnrhws.hospedagen.turismo.gov.br/FnrhWs/FnrhWs?wsdl';
    
    private function getSoapClient()
    {
        try{
            $soapClient = new SoapClient($this->wsld_url);
        }catch(Exception $e){
            throw new Exception('falha ao criar SoapClient msg:'.$e->getMessage(), libSNRHos::FalhaCriarSoapClient);
        }
        return $soapClient;
    }
    
    public function __construct($sandbox = false) {
        if($sandbox == true){
            $this->wsld_url = 'http://localhost:8088/mockwebservice?WSDL';
        }
    }
    
    public function setCredenciais($chave)
    {
        $this->chave = $chave;
    }
    
    public function inserirFicha($ficha)
    {
        try{
            $soapClient = $this->getSoapClient();
            $soapClient->fnrhInserir($ficha);
        }catch(Exception $e){
            throw new Exception('falha ao inserir ficha msg:' . $e->getMessage(), libSNRHos::FalhaInserirFicha);
        }
    }
    
    public function atualizarFicha($ficha)
    {
        try{
            $soapClient = $this->getSoapClient();
            $soapClient->fnrhAtualizar($ficha);
        }catch(Exception $e){
            throw new Exception('falha ao atualizar ficha msg:' . $e->getMessage(), libSNRHos::FalhaAtualizarFicha);
        }
    }
    
    public function checkin($hospede)
    {
        try{
            $soapClient = $this->getSoapClient();
            return $soapClient->fnrhCheckin($hospede);
        }catch(Exception $e){
            throw new Exception('falha ao informar checkin msg:' . $e->getMessage(), libSNRHos::FalhaCheckin);
        }
    }
    
    public function checkout($hospede)
    {
        try{
            $soapClient = $this->getSoapClient();
            $soapClient->fnrhCheckout($hospede);
        }catch(Exception $e){
            throw  new Exception('falha ao informar checkout msg:' . $e->getMessage(), libSNRHos::FalhaCheckout);
        }
    }
}
<file_sep>/src/msgCheckin.class.php
<?php
/**
 * Mensagem para informar checkin
 *
 * @author Airton (about.me/airton <EMAIL>)
 */
namespace libSNRHos;

class msgCheckin implements Mensagem{
    
    private $msg;
    
    public function __construct() {
        
    }
    
    public function setChaveAcesso($chave){
        $this->msg['chaveAcesso'] = $chave;
    }
    
    /** identificação da ficha de registro de hóspede para realizar checkin
     * @param string $numeroficha
     */
    public function setFicha($numeroFicha)
    {
        $this->msg['snNum'] = $numeroFicha;
    }
    /**
     * Data hora em formato americano do checkin
     * @param Data aaaa-MM-ddTHH:mm:ss $dataHora
     */
    public function setDataCheckin($dataHora)
    {
        $this->msg['dataCheckin']=$dataHora;
    }
    
    /** 
     * Retorna mensagem para envio em array
     * @return array
     */
    public function getMensagem()
    {
        return $this->msg;
    }
}
<file_sep>/src/msgFicha.class.php
<?php
/**
 * Mesagem de Entrada, ficha de registro do hóspede
 * @author Airton (about.me/airton <EMAIL>)
 */
namespace libSNRHos;

class msgFicha implements Mensagem{
    
    const   MotivoLazerFerias       =1;
    const   MotivoNegocios          =2;
    const   MotivoCongressoFeira    =3;
    const   MotivoParentesAmigos    =4;
    const   MotivoEstudosCursos     =5;
    const   MotivoReligiao          =6;
    const   MotivoSaude             =7;
    const   MotivoCompras           =8;
    const   MotivoOutro             =9;
    
    const   TransporteAviao         =1;
    const   TransporteAutomovel     =2;
    const   TransporteOnibus        =3;
    const   TransporteMoto          =4;
    const   TransporteNavio         =5;
    const   TransporteTrem          =6;
    const   TransporteOutro         =7;
    
    private $msg;
    
    public function __construct() {
        
    }
    
    public function setChaveAcesso($chave)
    {
        $this->msg['chaveAcesso'] = $chave;
    }
    
    public function setCpf($cpf)
    {
        $this->msg['fnrh']['snnumcpf'] = $cpf;
    }
    
    public function setTipoDocumento($tipo)
    {
        
    }
    
    public function setNumeroDocumento($numero)
    {
        
    }
    
    public function getMensagem(){
        return $this->msg;
    }
}

<file_sep>/README.md
lib-SNRHos
==========

Biblioteca php para integração com webservice do Sistema Nacional de Registro de Hóspedes (SNRHos) do Ministério do Turismo, que é uma exigência o envio de ficha do hóspede, checkin e checkout.
Site oficial: http://hospedagem.turismo.gov.br/
WSDL de PRODUÇÃO: http://fnrhws.hospedagem.turismo.gov.br/FnrhWs/FnrhWs?wsdl

<file_sep>/src/mensagem.class.php
<?php
/**
 * Interface básica de mensagem
 * @author Airton (about.me/airton <EMAIL>)
 */
namespace libSNRHos;

interface Mensagem {
    public function setChaveAcesso($chave);
    public function getMensagem();
}
