Created
March 31, 2016 20:46
-
-
Save valdiney/4f5997f7a0352c8cbda3f20178ff3b56 to your computer and use it in GitHub Desktop.
Versão 1.5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class Login_Controller extends Controller | |
{ | |
protected $view; | |
protected $browser; | |
protected $device; | |
protected $send_email; | |
protected $radcheck; | |
protected $visitante; | |
protected $dispositivo; | |
protected $radacct; | |
protected $publicidade; | |
protected $logomarca; | |
protected $hotspot; | |
protected $bem_vindo; | |
protected $leia_mais; | |
protected $aviseme; | |
protected $login_form; | |
public function __construct(Array $models, Array $services) | |
{ | |
$this->radcheck = $models['Radcheck']; | |
$this->visitante = $models['Visitante']; | |
$this->dispositivo = $models['Dispositivo']; | |
$this->radacct = $models['Radacct']; | |
$this->publicidade = $models['Publicidade']; | |
$this->logomarca = $models['Logomarca']; | |
$this->hotspot = $models['Login_Hotspot_Layout']; | |
$this->bem_vindo = $models['Bem_vindo']; | |
$this->leia_mais = $models['Leia_mais']; | |
$this->visualizacao = $models['Visualizacao_publicidade']; | |
$this->aviseme = $models['Aviseme']; | |
$this->login_form = $models['Login_form']; | |
$this->browser = $services['Browser_detection']; | |
$this->device = $services['Device_detection']; | |
$this->send_email = $services['Send_email']; | |
$this->view = $this->view(); | |
} | |
# Recebe o Post vindo do Mikrotik | |
public function recebe_do_mikrotik() | |
{ | |
# Dados vindos da página do Mikrotik | |
$data_mikrotik['mac'] = Input::in_post('mac'); | |
$data_mikrotik['ip'] = Input::in_post('ip'); | |
$data_mikrotik['link-orig'] = Input::in_post('link-orig'); | |
$data_mikrotik['error'] = Input::in_post('error'); | |
$data_mikrotik['chap-id'] = Input::in_post('chap-id'); | |
$data_mikrotik['chap-challenge'] = Input::in_post('chap-challenge'); | |
$data_mikrotik['link-login-only'] = Input::in_post('link-login-only'); | |
$data_mikrotik['link-orig-esc'] = Input::in_post('link-orig-esc'); | |
$data_mikrotik['mac-esc'] = Input::in_post('mac-esc'); | |
$data_mikrotik['server-name'] = Input::in_post('server-namer'); | |
# Passa os dados que vem da página do Mikrotik para a Session | |
foreach ($data_mikrotik as $key => $dados) { | |
Session::put_session($key, $dados); | |
} | |
# Verifica se o Cliente é recorrente por via do MAC | |
if ($this->radacct->verifica_mac(Session::get_session('mac'))) { | |
return Redirect::to('login.clientes_recorrentes'); | |
} | |
return Redirect::to('login.pagina_primeira_publicidade'); | |
} | |
# Mostra a página da primeira publicidade | |
public function pagina_primeira_publicidade() | |
{ | |
$this->view->layout('layout_primeira_publicidade'); | |
# Chama o método que busca a publicidade que será apresentada | |
$publicidades = $this->primeira_publicidade(); | |
return $this->view->make('publicidade.apresentar_primeira_publicidade', compact('publicidades')); | |
} | |
# Mostra a página de Login do Wifiaqui | |
public function pagina_login() | |
{ | |
$this->view->layout('layout_login_wifiaqui'); | |
# Chama o método para apresentar a logomarca e passa para View | |
$logomarca = $this->logomarca->imagem_logomarca(); | |
# Passa o background para a view | |
$style = $this->hotspot->obter_background(); | |
$array_campos = $this->login_form->get_array(); | |
return $this->view->make('inicio_hotspot.login_wifiaqui', compact('logomarca', 'style', 'array_campos')); | |
} | |
public function cadastrar_visitante() | |
{ | |
# Retorna um array contendo os dados dos csmpos editáveis | |
$array_campos = $this->login_form->get_array(); | |
# Recebe os campos editáveis via ppost | |
$data_campos['sobre_nome'] = trim(Input::in_post('sobre_nome')); | |
$data_campos['sexo'] = trim(Input::in_post('sexo')); | |
$data_campos['ano_nascimento'] = trim(Input::in_post('ano_nascimento')); | |
$data_campos['telefone'] = trim(Input::in_post('telefone')); | |
$data_campos['celular'] = trim(Input::in_post('celular')); | |
$data_campos['estado_natal'] = trim(Input::in_post('estado_natal')); | |
$data_campos['cidade_natal'] = trim(Input::in_post('cidade_natal')); | |
# Persiste os dados na view depois da validação | |
Helper::remember_data($data_campos); | |
# Chama o método de validação dos campos editaveis | |
//$this->validacao_campos_editaveis($data_campos, $array_campos); | |
/*-------------------------------------------------------------*/ | |
# Dados vindos da tela de Login | |
$visitante_nome = trim(Input::in_post('nome')); | |
$visitante_username = trim(Input::in_post('username')); | |
# Passa nome e email para um array, para ser alocado no (Remember Data) | |
$data_campos_nome_email['visitante_nome'] = $visitante_nome; | |
$data_campos_nome_email['visitante_username'] = $visitante_username; | |
# Persiste os dados na view depois da validação | |
Helper::remember_data($data_campos_nome_email); | |
if (empty($visitante_nome) or empty($visitante_username)) { | |
Session::flash('error', "Por favor, digite seu Nome e um Email Valido."); | |
return Redirect::back(); | |
} elseif (filter_var($visitante_nome, FILTER_VALIDATE_EMAIL)) { | |
Session::flash('error', "Não digite Email no Campo Nome."); | |
return Redirect::back(); | |
} elseif ( ! filter_var($visitante_username, FILTER_VALIDATE_EMAIL)) { | |
Session::flash('error', "Por favor, digite um Email Valido"); | |
return Redirect::back(); | |
} elseif ( ! $this->verifica_email_dns($visitante_username)) { | |
Session::flash('error', "Por favor, digite um Email Valido. Esse email não existe."); | |
return Redirect::back(); | |
} elseif (strlen($visitante_nome) < 3) { | |
Session::flash("Digite um Nome Valido."); | |
return Redirect::back(); | |
} | |
# Cadastra o Cliente na tabela (radcheck) | |
$cadastro_radcheck = $this->radcheck->cadastrar_radcheck($visitante_username); | |
# Pega o id do ultimo radcheck cadastrado | |
$id_ultimo_radcheck_cadastrado = $this->radcheck->get_last_id(); | |
# Verifica se o Cliente foi cadastrado na tabela (radcheck) | |
if ($cadastro_radcheck) { | |
# Dados para cadastrar o Cliente na tabela (visitante) | |
$data_visitante['id_radcheck'] = $id_ultimo_radcheck_cadastrado; | |
$data_visitante['nome'] = $visitante_nome; | |
$data_visitante['email'] = $visitante_username; | |
$data_visitante['mac'] = Session::get_session('mac'); | |
$data_visitante['sobre_nome'] = $data_campos['sobre_nome']; | |
$data_visitante['sexo'] = $data_campos['sexo']; | |
$data_visitante['ano_nascimento'] = $data_campos['ano_nascimento']; | |
$data_visitante['telefone'] = $data_campos['telefone']; | |
$data_visitante['celular'] = $data_campos['celular']; | |
$data_visitante['estado_natal'] = $data_campos['estado_natal']; | |
$data_visitante['cidade_natal'] = $data_campos['cidade_natal']; | |
# Realiza o cadastro do Cliente | |
if ($this->visitante->cadastrar_visitante($data_visitante)) { | |
# Pega o id do ultimo Cliente cadastrado | |
$id_ultimo_visitante_cadastrado = $this->visitante->get_last_id(); | |
# Dados para cadastrar o Dispositivo na tabela (dispositivo) | |
$data_dispositivo['id_visitante'] = $id_ultimo_visitante_cadastrado; | |
$data_dispositivo['so'] = $this->device->get_OS(); | |
$data_dispositivo['browser'] = $this->browser->get_browser('name', false); | |
$data_dispositivo['browser_version'] = $this->browser->get_browser(false, 'version'); | |
$data_dispositivo['mac'] = Session::get_session('mac'); | |
$data_dispositivo['data_cadastro'] = Date::date_time(); | |
# Busca o cliente na tabela (visitante) por via do mac | |
$buscar_dados_visitante = $this->visitante->find_by('mac', Session::get_session('mac')); | |
# Busca o cliente na tabela (radcheck) por via do (id_radcheck) databela (radcheck) | |
$buscar_dados_visitante_radcheck = $this->radcheck->find($buscar_dados_visitante['id_radcheck']); | |
# Realiza o cadastro do Dispositivo | |
if ($this->dispositivo->cadastrar_dispositivo($data_dispositivo)) { | |
# Carrega os dados no formulário para enviar um Submit para o Mikrotik | |
return $this->view->make('acesso.liberar_acesso', compact('buscar_dados_visitante_radcheck')); | |
} | |
} | |
} | |
} | |
# Responsavel por trazer a (PRIMEIRA) publicidade que será apresentada | |
# Antes do cliente está logado | |
public function primeira_publicidade() | |
{ | |
$publicidades = $this->publicidade->apresentar_publicidade_rand(); | |
# Verifica se existem publicidades cadastradas | |
if (count($publicidades) > 0) { | |
# Verifica se retorna (true), ou seja, se existem publicidades em periodo de apresentação | |
if ($publicidades) { | |
# Conta a quantidade de visualizações | |
$data_banner['visualizacoes'] = $publicidades->visualizacoes + 1; | |
# Grava a quantidade de visualizações incrementadas | |
$this->publicidade->editar_banner($data_banner, $publicidades->id); | |
# Cadastra a data da visualização da publicidade | |
$data_visualizacao['id_publicidade'] = $publicidades->id; | |
$this->visualizacao->cadastrar($data_visualizacao); | |
} | |
} | |
return $publicidades; | |
} | |
# Responsavel por trazer a (SEGUNDA) publicidade que será apresentada | |
# Depois do cliente está logado | |
public function segunda_publicidade() | |
{ | |
$this->view->layout('layout_publicidade'); | |
$publicidades = $this->publicidade->apresentar_publicidade_rand(); | |
# Verifica se existem publicidades cadastradas | |
if (count($publicidades) > 0) { | |
# Verifica se retorna (true), ou seja, se existem publicidade em periodo de apresentação | |
if ($publicidades) { | |
# Conta a quantidade de visualizações | |
$data_banner['visualizacoes'] = $publicidades->visualizacoes + 1; | |
# Grava a quantidade de visualizações incrementadas | |
$this->publicidade->editar_banner($data_banner, $publicidades->id); | |
# Busca um link de leia mais pelo id da publicidade | |
$leia_mais = $this->leia_mais->find_by('id_publicidade', $publicidades->id); | |
# Cadastra a data da visualização da publicidade | |
$data_visualizacao['id_publicidade'] = $publicidades->id; | |
$this->visualizacao->cadastrar($data_visualizacao); | |
} | |
} | |
return $this->view->make('publicidade.apresentar_segunda_publicidade', compact('publicidades', 'leia_mais')); | |
} | |
# Realiza toda a logica de negocio referente aos clientes recorrententes | |
public function clientes_recorrentes() | |
{ | |
# Busca um Cliente na tabela via MAC | |
$cliente = $this->visitante->find_by('mac', Session::get_session('mac')); | |
# Calcula quantas vezes o Cliente retornou | |
$cliente_recorrente['vezes_recorrente'] = $cliente['vezes_recorrente'] + 1; | |
# Cadastra as vezes que o Cliente Voltou | |
$this->visitante->update($cliente_recorrente, $cliente['id']); | |
# Pega a data do atual acesso | |
$data_recorrente['data_ultimo_acesso'] = Date::date_time(); | |
# Cadastra a data do atual acesso | |
$this->visitante->update($data_recorrente, $cliente['id']); | |
$this->view->layout('layout_bem_vindo_de_volta'); | |
# Passa a publicidade para a view | |
$publicidades = $this->primeira_publicidade(); | |
$style = $this->bem_vindo->obter_estilo_template(); | |
# Chama o método para apresentar a logomarca e passa para View | |
$logomarca = $this->logomarca->imagem_logomarca(); | |
return $this->view->make('boas_vindas.bem_vindo_novamente', compact('publicidades', 'cliente', 'style', 'logomarca')); | |
} | |
public function conectar_recorrente() | |
{ | |
# Recupera os dados da tabela visitante via mac | |
$cliente_visitante = $this->visitante->find_by('mac', Session::get_session('mac')); | |
# Busca o cliente na tabela (visitante) por via do mac | |
$buscar_dados_visitante = $this->visitante->find_by('mac', Session::get_session('mac')); | |
# Busca o cliente na tabela (radcheck) por via do (id_radcheck) databela (radcheck) | |
$buscar_dados_visitante_radcheck = $this->radcheck->find($buscar_dados_visitante['id_radcheck']); | |
# Carrega os dados no formulário para enviar um Submit para o Mikrotik | |
return $this->view->make('acesso.liberar_acesso', compact('buscar_dados_visitante', 'buscar_dados_visitante_radcheck')); | |
} | |
public function verifica_email_dns($email) | |
{ | |
$email = explode('@', $email); | |
$record = 'MX'; | |
return checkdnsrr($email[1], $record); | |
} | |
public function validacao_campos_editaveis($data_campos, $array_campos) | |
{ | |
if ($array_campos['sobre_nome'] == 1) { | |
if ($data_campos['cidade_natal'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['sexo'] == 1) { | |
if ($data_campos['sexo'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['ano_nascimento'] == 1) { | |
if ($data_campos['ano_nascimento'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['telefone'] == 1) { | |
if ($data_campos['telefone'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['celular'] == 1) { | |
if ($data_campos['celular'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['estado_natal'] == 1) { | |
if ($data_campos['estado_natal'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
if ($array_campos['cidade_natal'] == 1) { | |
if ($data_campos['cidade_natal'] == '') { | |
Session::flash('error', "Todos os Campos são Obrigatórios."); | |
return Redirect::back(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment