| Server IP : 162.214.74.102 / Your IP : 216.73.217.80 Web Server : Apache System : Linux dedi-4363141.lrsys.com.br 3.10.0-1160.119.1.el7.tuxcare.els25.x86_64 #1 SMP Wed Oct 1 17:37:27 UTC 2025 x86_64 User : lrsys ( 1015) PHP Version : 5.6.40 Disable Function : exec,passthru,shell_exec,system MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/lrsys/public_html/lrsys_apps/dialogo/application/plugins/module_arbo/models/ |
Upload File : |
<?php
/**
* Classe responsável pelas requisições GET e POST para Gaia
*
*/
class GaiaRequest
{
private $url_login;
private $url_login_valida;
private $email;
private $password;
private $provider;
private $header;
private $cookie;
private $post_data;
private $url_imovel;
private $url_imovel_referer;
private $resource = false;
private $url_proprietarios;
private $url_clientes;
private $url_ajax_clientes;
private $url_save_cliente;
private $url_cliente_referer;
private $url_busca_endereco;
private $url_states;
private $url_cities;
private $url_search_properties;
private $url_save_proposal;
private $url_realtors;
private $url_search_empreend1;
private $url_search_empreend2;
private $url_save_empreendimento;
public function __construct()
{
$this->url_login = "http://signin.ingaia.com.br/?provider=imob";
$this->url_login_valida = "http://app.valuegaia.com.br/login-valida.aspx";
$this->url_executelogin = 'http://signin.ingaia.com.br/Handlers/ExecuteLogin.ashx';
$this->email = "leonardo@lrsys.com.br";
$this->password = "juntus755";
$this->provider = "imob";
$this->header = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36";
$this->cookie = __DIR__ . '/cookie.txt';
$this->post_data = [
'txLogin' => $this->email,
'txSenha' => $this->password,
'txtWiki' => '',
'txtGaiaInc' => '',
'txtPage' => '',
'txtValue' => '',
'txtEid' => '',
'txtGaiaAdsAccessToken' => '',
'txtGaiaAdsRefreshToken' => ''];
$this->url_imovel = "http://app.valuegaia.com.br/admin/modules/imoveis_beta/imovel-acao.aspx?id=";
$this->url_imovel_referer = "http://app.valuegaia.com.br/admin/default.aspx#/modules/imoveis_beta/imovel-novo.aspx?acao=incluir";
$this->url_proprietarios = "http://app.valuegaia.com.br/admin/json/sugests/proprietarios.aspx?search={{search}}&add=";
$this->url_clientes = "http://app.valuegaia.com.br/admin/#modules/clientes/cliente.aspx?bRTclientesNome=";
$this->url_ajax_clientes = 'http://app.valuegaia.com.br/admin/json/cliente2.aspx?order=desc&sortBy=C.dt_atualizado&resultPorPgn=20&q=&hdPermissao=True&hdImbFilial=25181&hdTipo=NULL&txEmail={$email}&cboStatus=1&cboDeltaVenda=20&cboDeltaLocacao=20&cboRadar=1&MS=58465108400965&_=1493123336365';
$this->url_save_cliente = "http://app.valuegaia.com.br/admin/modules/clientes/cliente-acao.ashx";
$this->url_cliente_referer = "http://app.valuegaia.com.br/admin/default.aspx";
$this->url_busca_endereco = 'http://app.valuegaia.com.br/admin/json/location/searchAddress.ashx?method=GetAddressByName&city={$id_city}&address={$address}&page_limit=20&page=1&_=1493296906454';
$this->url_states = "http://app.valuegaia.com.br/admin/json/location/states.ashx";
$this->url_cities = "http://app.valuegaia.com.br/admin/json/location/cities.ashx";
$this->url_search_properties= 'http://imob.gaiacore.com.br/search/properties?authorization=903def0bece78cb8ab94ca30e41d3961&city_id=0&city_name=Todos&country_id=0&country_name=Todos&limit=12&offset=0&scope=AGENCY&sort_by=reference=&sort_order=desc&state_id=0&state_name=Todos&street_title={$street}';
$this->url_save_proposal = "http://app.gaiacore.com.br/admin/modules/imoveis_beta/proposta/imovel-proposta-acao.ashx";
$this->url_realtors = "http://app.valuegaia.com.br/admin/json/agenda/usuarios.ashx?method=BuscarUsuarioCompromisso";
$this->url_search_empreend1 = "http://app.valuegaia.com.br/admin/json/empreendimento.aspx?order=desc&sortBy=dt_atualizacao&resultPorPgn=20&q=";
$this->url_search_empreend2 = "http://app.valuegaia.com.br/admin/json/jsonEmpreendimento.ashx?page_limit=20&page=1&vertical=True&_=1500053397522&q=";
$this->url_save_empreendimento = "http://app.valuegaia.com.br/admin/modules/empreendimentos/empreendimento_acao.aspx";
}
/**
* Método mais importante na integração com o sistema da Gaia, ele é responsável por fazer o login
* e assinar a propriedade resource que é usada por outros métodos nas buscas e inserts no
* sistema da Gaia.
*
* @return $this
*/
public function doLogin()
{
$this->resource = curl_init();
curl_setopt($this->resource, CURLOPT_URL, $this->url_login_valida);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_login);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
curl_setopt($this->resource, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->resource, CURLOPT_USERAGENT, $this->header);
curl_setopt($this->resource, CURLOPT_HEADER, false);
curl_setopt($this->resource, CURLOPT_COOKIESESSION, true);
curl_setopt($this->resource, CURLOPT_COOKIEJAR, $this->cookie);
curl_setopt($this->resource, CURLOPT_COOKIEFILE, $this->cookie);
curl_setopt($this->resource, CURLOPT_POST, true);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($this->post_data));
$result = curl_exec($this->resource);
return $this;
}
/**
* Faz a busca pelos dados do edifício/condomínio
*/
public function findEmpreendimentoByName($name, $state = '', $city = '')
{
if($name && count($name) > 0) {
$this->doLogin();
$name = str_replace(' ', '%20', $name);
$url = $this->url_search_empreend1 . "&txNome=" . $name;
if (!empty($state)) {
$url .= "&cboEstado=" . $state;
}
if (!empty($city)) {
$url .= "&cboCidade=" . $city;
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->resource);
return $result;
}
}
return false;
}
/**
* Faz a busca pelos dados do edifício/condomínio sem filtrar a
* cidade/estado, apenas pelo nome.
*/
public function findEmpreendimentoOnlyByName($name)
{
if($name && count($name) > 0) {
$this->doLogin();
$name = str_replace(' ', '%20', $name);
$url = $this->url_search_empreend2 . $name;
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->resource);
return $result;
}
}
return false;
}
/**
* Faz a busca pelos dados do edifício/condomínio através do nome da rua
*/
public function findEmpreendimentoByStreet($street, $state = '', $city = '')
{
if($street && strlen($street) > 0) {
$this->doLogin();
$street = str_replace(' ', '%20', $street);
$url = $this->url_search_empreend1 . "&txLogradouro=" . $street;
if (!empty($state)) {
$url .= "&cboEstado=" . $state;
}
if (!empty($city)) {
$url .= "&cboCidade=" . $city;
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->resource);
return $result;
}
}
return false;
}
/**
* Busca os dados do corretor
*
* @param $nome
* @return mixed
*/
public function findRealtor($name)
{
if (!empty($name)) {
// Faz o login na Gaia
if(!$this->resource) {
$this->doLogin();
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_realtors);
curl_setopt($this->resource, CURLOPT_HEADER, 0);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->resource, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$result = curl_exec($this->resource);
$array_data = json_decode($result, true);
foreach ($array_data['dados'] as $i => $realtor) {
if ($match = preg_grep("/{$name}/", $realtor)) {
return $realtor;
}
}
return false;
}
}
}
/**
* Método que faz a busca do endereço no sistema da Gaia.
*
* @param int $id_city
* @param $endereco
* @return bool
*/
public function getAddress($id_city = 126, $endereco)
{
// Faz o login na Gaia
if(!$this->resource) {
$this->doLogin();
}
// Adiciona o ID da cidade na URL
$url = str_replace('{$id_city}', $id_city, $this->url_busca_endereco);
if (!empty($endereco)) {
// Adiciona o nome da rua na URL de busca
$url = str_replace('{$address}', str_replace(' ', '+', $endereco), $url);
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_HEADER, 0);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->resource, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$result = curl_exec($this->resource);
$array_data = json_decode($result, true);
if(count($array_data['data']) <= 0) {
return false;
}
return $array_data['data'];
}
return false;
}
/**
* Método que busca as cidades no sistema da Gaia.
*
* @param $state
* @return bool
*/
public function getCities($state, $city)
{
// Faz o login na Gaia
$this->doLogin();
$data = [];
if (!empty($state))
$data['state'] = $state;
if (!empty($city))
$data['city'] = $city;
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_cities);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_POST, 1);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
$cities = json_decode($result, true);
if ($cities) {
if(isset($cities['data']) && count($cities['data']) > 0) {
return $cities['data'];
}
}
}
return false;
}
/**
* Método que busca os Estados no sistema da Gaia.
*
* @param int $country
* @return mixed
*/
public function getStates($country = 1)
{
// Faz o login na Gaia
$this->doLogin();
$data = [];
if (!empty($country))
$data['country'] = $country;
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_states);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_POST, 1);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
$states = json_decode($result, true);
if ($states) {
if(isset($states['data']) && count($states['data']) > 0) {
return $states['data'];
}
}
}
return false;
}
/**
* Método que busca os dados do cliente no sistema da Gaia.
*
* @param $email
* @return mixed
*/
public function getCostumer($email)
{
// Faz o login na Gaia
if(!$this->resource) {
$this->doLogin();
}
if (!empty($email)) {
$url = str_replace('{$email}', $email, $this->url_ajax_clientes);
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_HEADER, 0);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->resource, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$result = curl_exec($this->resource);
$array_data = json_decode($result, true);
if($array_data['total'] <= 0) {
return false;
}
$data = $array_data['Body'][0];
return $data;
}
}
/**
* Retorna o resource
*/
public function getResource()
{
return $this->resource;
}
/**
* Método que busca os dados das propriedades que serão usados no envio da
* Proposta de Locação.
*
* @param array $filters
* @return bool
*/
public function getProperties(array $filters)
{
// Faz o login na Gaia
$this->doLogin();
$url = $this->url_search_properties;
// Filtra por rua e número
if (isset($filters['street']) && !empty($filters['street'])) {
$street = str_replace(' ', '+', strtolower($filters['street']));
if (isset($filters['num']) && !empty($filters['num']))
$street .= ",+n%C2%BA+" . $filters['num'];
$url = str_replace('{$street}', $street, $url);
}
// Filtra por referência
if (isset($filters['reference']) && !empty($filters['reference'])) {
$url .= '&reference=' . $reference;
}
// Filtra por categoria
if (isset($filters['property_category_id']) && !empty($filters['property_category_id'])) {
$url .= '&property_category_id=' . $filters['property_category_id'];
}
// Filtra por tipo
if (isset($filters['property_type_id']) && !empty($filters['property_type_id'])) {
$url .= '&property_type_id=' . $filters['property_type_id'];
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->resource);
$properties = json_decode($result, true);
if ($properties) {
if(isset($properties['data']) && count($properties['data']) > 0) {
return $properties['data'];
}
}
}
return false;
}
/**
* Todo
*/
public function getPropertiesList()
{
$url = "http://imob.gaiacore.com.br/property_listings/55716810";
// $url = "http://app.gaiacore.com.br/property_listings/55716810";
$this->doLogin();
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $url);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($this->resource);
// dd($result);
// $properties = json_decode($result, true);
//
// if ($properties) {
// if(isset($properties['data']) && count($properties['data']) > 0) {
// return $properties['data'];
// }
// }
}
}
/**
* Método que cadastra o novo cliente no sistema da Gaia.
*
* @param $data array
*/
public function saveCustomer($data, $form_id = null)
{
global $_pd;
// Faz o login na Gaia
$this->doLogin();
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_save_cliente);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_POST, 1);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
// Save response data in log.txt
$sufix = "\n\n";
$log_file = $_pd . "/storage/gaia/customer/log.txt";
if (!is_writable($log_file)) {
die('Failed. The file "/storage/gaia/customer/log.txt" is not writable.');
}
$prefix = "Request sended in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . serialize($data) . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$prefix = "Response received in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . $result . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$log = ORM::for_table('module_arbo_robo_logs')->create();
$log->date = date('Y-m-d H:i:s');
$log->owner = (isset($data['txNome']) ? $data['txNome'] : '');
$log->description = "Enviando os dados do proprietário para o sistema da Gaia";
$log->data = json_encode($data);
$log->operation = 'OUTPUT';
$log->status = preg_replace(['/^pergunta:/', '/^alert:/'], ['Sucesso: ', 'Alerta: '], $result);
$log->ip = $_SERVER['SERVER_ADDR'];
$log->form_id = $form_id;
$log->save();
}
}
/**
* Cadastra um novo empreendimento/condomínio no sistema da Gaia.
*
* @param $data array
*/
public function saveEmpreendimento($data, $proprietario = '', $form_id = null)
{
// Faz o login na Gaia
$this->doLogin();
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_save_empreendimento);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_POST, 1);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
$log = ORM::for_table('module_arbo_robo_logs')->create();
$log->date = date('Y-m-d H:i:s');
$log->owner = $proprietario;
$log->description = "Enviando os dados do empreendimento para a Gaia";
$log->data = json_encode($data);
$log->operation = 'OUTPUT';
$log->status = preg_replace(['/^pergunta:/', '/^alert:/'], ['Sucesso: ', 'Alerta: '], $result);
$log->ip = $_SERVER['SERVER_ADDR'];
$log->form_id = $form_id;
$log->save();
return $result;
}
return false;
}
/**
* Envia o formulário de cadastro de imóvel para a Gaia
*
* @param $data
*/
public function sendDataImovel($data, $form_id)
{
global $_pd;
// Faz o login na Gaia
if(!$this->resource) {
$this->doLogin();
}
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_imovel);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_imovel_referer);
curl_setopt($this->resource, CURLOPT_POST, true);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
$json_result = json_decode($result);
// Save response data in log.txt
$sufix = "\n\n";
$log_file = $_pd . "/storage/gaia/imovel/log.txt";
if (!is_writable($log_file)) {
die('Failed. The file "/storage/gaia/imovel/log.txt" is not writable.');
}
$prefix = "Request sended in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . serialize($data) . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$prefix = "Response received in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . $result . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$log = ORM::for_table('module_arbo_robo_logs')->create();
$log->date = date('Y-m-d H:i:s');
$log->owner = (isset($data['txProprietario']) ? $data['txProprietario'] : '');
$log->description = "Enviando os dados do imóvel para o sistema da Gaia";
$log->data = json_encode($data);
$log->operation = 'OUTPUT';
// $log->status = preg_replace(['/^pergunta:/', '/^alert:/'], ['Sucesso: ', 'Alerta: '], $result);
// Pego o status do retorno
if($json_result->type == 'Alert')
{
$msg_result = null;
foreach ($json_result->messages as $msg_aux)
{
$msg_result .= $msg_aux->message.' ('.json_encode($msg_aux->fields).') | ';
}
$msg_result = substr($msg_result, 0, -3);
$log->status = 'Alerta: '.$msg_result;
}
else
{
$log->status = 'Sucesso: '.$json_result->messages[0]->message;
}
$log->ip = $_SERVER['SERVER_ADDR'];
$log->form_id = $form_id;
$log->save();
if ($form_id) {
if(preg_match('/Sucesso/', $log->status))
{
$ref = preg_split('/Sucesso: Imóvel cadastrado com a referência /', $log->status);
$ref_id = preg_split('/modules\/imoveis_beta\/imovel-alterar\.aspx\?id=/', $json_result->url);
$status = json_encode(array('ref' => trim($ref[1]), 'id' => trim($ref_id[1])));
}
else
{
$status = null;
}
$ArboForms = new ArboFormsModel();
$form = $ArboForms->getOne($form_id);
$r = $ArboForms->update(['return_gaia' => $result, 'sent_to_gaia' => $status], $form);
}
}
}
/**
* Método que envia os dados da Proposta de Locação para o sistema da Gaia.
*
* @param $data
* @return bool|mixed
*/
public function sendDataProposal($data)
{
global $_pd;
// Faz o login na Gaia
$this->doLogin();
if($this->resource) {
curl_setopt($this->resource, CURLOPT_URL, $this->url_save_proposal);
curl_setopt($this->resource, CURLOPT_REFERER, $this->url_cliente_referer);
curl_setopt($this->resource, CURLOPT_POST, 1);
curl_setopt($this->resource, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($this->resource);
// dd([$result, $data]);
// Save response data in log.txt
$sufix = "\n\n";
$log_file = $_pd . "/storage/gaia/proposal/log.txt";
if (!is_writable($log_file)) {
die('Failed. The file "/storage/gaia/proposal/log.txt" is not writable.');
}
$prefix = "Request sended in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . serialize($data) . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$prefix = "Response received in " . date('d/m/Y H:i:s') . ":\n";
$content = $prefix . $result . $sufix;
file_put_contents($log_file, $content, FILE_APPEND);
$log = ORM::for_table('module_arbo_robo_logs')->create();
$log->date = date('Y-m-d H:i:s');
$log->owner = (isset($data['txNome']) ? $data['txNome'] : '');
$log->description = "Enviando os dados da proposta para o sistema da Gaia";
$log->data = json_encode($data);
$log->operation = 'OUTPUT';
$log->status = preg_replace(['/^pergunta:/', '/^alert:/'], ['Sucesso: ', 'Alerta: '], $result);
$log->ip = $_SERVER['SERVER_ADDR'];
$log->save();
return $result;
}
return false;
// if ($form_id) {
// $ArboForms = new ArboFormsModel();
// $form = $ArboForms->getOne($form_id);
// $r = $ArboForms->update(['return_gaia' => $result], $form);
// }
}
/**
* Método Destrutor
*/
public function __destruct()
{
if($this->resource) {
curl_close($this->resource);
}
}
}