function testeUpdate()
{
    $entity = new UsuarioRastreador();
    $entity->setId(8);
    $usuario = new Usuario();
    $usuario->setId(2);
    $entity->setUsuario($usuario);
    $rastreador = new Usuario();
    $rastreador->setId(8);
    $entity->setRastreador($rastreador);
    echo "Resultado: " . ServiceLocator::getUsuarioRastreadorService()->update($entity);
}
function compararUsuarioRastreador()
{
    $usuRas = new UsuarioRastreador();
    $usuRas->setId(14);
    $usu = new Usuario();
    $usu->setId(2);
    $usu->setLogin("Creuza");
    $usu->setNome("Creuza");
    $usu->setSenha("123123");
    $usuRas->setUsuario($usu);
    $ras = new Rastreador();
    $ras->setId(5);
    $ras->setNome("Rastreador 2");
    $ras->setPublico(false);
    $ras->setSerial("PQ123");
    $ras->setToken("TK148");
    $usuRas->setRastreador($ras);
    $usuRas2 = new UsuarioRastreador();
    $usuRas2->setId(14);
    $usu2 = new Usuario();
    $usu2->setId(2);
    $usu2->setLogin("Creuza");
    $usu2->setNome("Creuza");
    $usu2->setSenha("123123");
    $usuRas2->setUsuario($usu2);
    $ras2 = new Rastreador();
    $ras2->setId(5);
    $ras2->setNome("Rastreador 2");
    $ras2->setPublico(false);
    $ras2->setSerial("PQ123");
    $ras2->setToken("TK148");
    $usuRas2->setRastreador($ras2);
    var_dump($usuRas->comparar($usuRas2));
    echo "<br><br>";
    var_dump($usuRas == $usuRas2);
}
 public function readById(PDO $conexao, $id)
 {
     $entity = null;
     if ($conexao != null && $id > 0) {
         try {
             $sql = "select * from usuario_rastreador where id = ?";
             $ps = $conexao->prepare($sql);
             $ps->bindParam(1, $id, PDO::PARAM_INT);
             $ps->execute();
             if ($linha = $ps->fetch(PDO::FETCH_ASSOC)) {
                 $entity = new UsuarioRastreador();
                 $entity->setId($linha['id']);
                 $entity->setUsuario($linha['usuario_fk']);
                 $entity->setRastreador($linha['rastreador_fk']);
             }
             $ps = null;
         } catch (PDOException $e) {
             throw $e;
         }
     }
     return $entity;
 }
function vincularUsuarioRastreador()
{
    $usuario = ServiceLocator::getUsuarioService()->readById(9);
    $rastreador = ServiceLocator::getRastreadorService()->readById(1);
    if ($usuario != null && $rastreador != null) {
        $usuarioRastreador = new UsuarioRastreador();
        $usuarioRastreador->setUsuario($usuario);
        $usuarioRastreador->setRastreador($rastreador);
        echo ServiceLocator::getUsuarioRastreadorService()->create($usuarioRastreador);
    }
}
 private function tratarRecebimentoConfigInicialRastreador($valores, $clienteWS)
 {
     $this->printar("CONFIGURACAO INICIAL RASTREADOR\n", false, false);
     $clienteWSDestino = null;
     $resposta = array();
     $resposta[] = TipoComunicacao::CONFIG_INICIAL_RASTREADOR;
     switch ($clienteWS->getTipoCliente()) {
         case TipoCliente::USUARIO:
             $serialRastreador = $valores[1];
             $tokenRastreador = $valores[2];
             $criteria = array();
             $criteria[RastreadorCriteria::SERIAL_EQ] = $serialRastreador;
             $criteria[RastreadorCriteria::TOKEN_EQ] = $tokenRastreador;
             $rastreador = ServiceLocator::getRastreadorService()->readByCriteria($criteria)[0];
             if ($rastreador != null) {
                 $clienteWSRas = $this->clienteWSController->buscarCliente(TipoCliente::RASTREADOR, $rastreador->getId());
                 if ($clienteWSRas != null) {
                     // VERIFICA SE USUÁRIO JÁ ESTÁ VINCULADO AO RASTREADOR
                     if ($this->verificarAcessoDeUsuarioAoRastreador($clienteWS->getCadastro(), $clienteWSRas->getCadastro()) != true) {
                         // VERIFICA SE RASTREADOR NÃO POSSUI NENHUM USUÁRIO VINCULADO
                         if (count($rastreador->getUsuarioArray()) == 0) {
                             // MENSAGEM DE CONFIGURAÇÃO INICIAL PARA RASTREADOR
                             $clienteWSDestino = $clienteWSRas;
                             $resposta[] = $rastreador->getId();
                             $resposta[] = $rastreador->getSerial();
                             $resposta[] = $rastreador->getToken();
                             $clienteWS->setTipoComunicacaoAtual(TipoComunicacao::CONFIG_INICIAL_RASTREADOR);
                             $clienteWS->setSocketPar($clienteWSRas->getSocket());
                             $clienteWSRas->setTipoComunicacaoAtual(TipoComunicacao::CONFIG_INICIAL_RASTREADOR);
                             $clienteWSRas->setSocketPar($clienteWS->getSocket());
                         } else {
                             // TENTA VINCULAR USUÁRIO A RASTREADOR
                             $usuarioRastreador = new UsuarioRastreador();
                             $usuarioRastreador->setUsuario($clienteWS->getCadastro());
                             $usuarioRastreador->setRastreador($clienteWSRas->getCadastro());
                             if (ServiceLocator::getUsuarioRastreadorService()->create($usuarioRastreador) == true) {
                                 // MENSAGEM DE SUCESSO PARA USUÁRIO (OK)
                                 $clienteWSDestino = $clienteWS;
                                 $resposta[] = $clienteWS->getId();
                                 $resposta[] = 1;
                                 $clienteWS->atualizarCadastro();
                                 $clienteWSRas->atualizarCadastro();
                             } else {
                                 // MENSAGEM DE ERRO PARA USUÁRIO (VICULAÇÃO USUÁRIO/RASTREADOR FALHOU)
                                 $clienteWSDestino = $clienteWS;
                                 $resposta[] = $clienteWSRas->getId();
                                 $resposta[] = 22;
                             }
                         }
                     } else {
                         // MENSAGEM DE SUCESSO PARA USUÁRIO (RASTREAOR JÁ VINCULADO A USUÁRIO)
                         $clienteWSDestino = $clienteWS;
                         $resposta[] = $rastreador->getId();
                         $resposta[] = 2;
                     }
                 } else {
                     // MENSAGEM DE ERRO PARA USUÁRIO (RASTREADOR DESCONECTADO)
                     $clienteWSDestino = $clienteWS;
                     $resposta[] = $rastreador->getId();
                     $resposta[] = 21;
                 }
             } else {
                 // MENSAGEM DE ERRO PARA USUÁRIO (SERIAL E/OU TOKEN NÃO EXISTE)
                 $clienteWSDestino = $clienteWS;
                 $resposta[] = 0;
                 $resposta[] = 20;
             }
             break;
         case TipoCliente::RASTREADOR:
             $resultado = $valores[1];
             if ($clienteWS->getTipoComunicacaoAtual() == TipoComunicacao::CONFIG_INICIAL_RASTREADOR && $clienteWS->getSocketPar() != null) {
                 $clienteWSUsu = $this->clienteWSController->buscarClientePorSocket($clienteWS->getSocketPar());
                 if ($clienteWSUsu != null) {
                     if ($resultado == 1) {
                         // TENTA VINCULAR USUÁRIO A RASTREADOR
                         $usuarioRastreador = new UsuarioRastreador();
                         $usuarioRastreador->setUsuario($clienteWSUsu->getCadastro());
                         $usuarioRastreador->setRastreador($clienteWS->getCadastro());
                         if (ServiceLocator::getUsuarioRastreadorService()->create($usuarioRastreador) == true) {
                             $clienteWS->atualizarCadastro();
                             $clienteWSUsu->atualizarCadastro();
                             // MENSAGEM DE SUCESSO PARA USUÁRIO (OK)
                             $clienteWSDestino = $clienteWSUsu;
                             $resposta[] = $clienteWS->getId();
                             $resposta[] = 1;
                         } else {
                             // MENSAGEM DE ERRO PARA USUÁRIO (VICULAÇÃO USUÁRIO/RASTREADOR FALHOU)
                             $clienteWSDestino = $clienteWSUsu;
                             $resposta[] = $clienteWS->getId();
                             $resposta[] = 22;
                         }
                     }
                     $clienteWSUsu->setTipoComunicacaoAtual(null);
                     $clienteWSUsu->setSocketPar(null);
                 }
             }
             $clienteWS->setTipoComunicacaoAtual(null);
             $clienteWS->setSocketPar(null);
             break;
     }
     if ($clienteWSDestino != null && count($resposta) > 0) {
         $this->enviarValoresParaClienteWS($resposta, $clienteWSDestino);
     }
 }