Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Classe de manipulação da tabela atendimento.
- *
- * @author SohMoleza, revisão $LastChangedRevision:$ <sohmoleza@redrat.com.br>
- * @package Classes
- * @link https://github.com/joubertredrat/sohmoleza
- */
- class Atendimento
- {
- /**
- * Atributo interno da classe Atendimento.
- *
- * @var integer
- */
- private $cd_atendimento;
- /**
- * Atributo interno da classe Atendimento.
- *
- * @var integer
- */
- private $cd_usuario;
- /**
- * Atributo interno da classe Atendimento.
- *
- * @var integer
- */
- private $cd_uf;
- /**
- * Atributo interno da classe Atendimento.
- *
- * @var integer
- */
- private $cd_cidade;
- /**
- * Atributo interno da classe Atendimento.
- *
- * @var integer
- */
- private $cd_bairro;
- /**
- * Delimita se durante a instância do objeto houve alguma alteração em seus
- * atributos, este recurso é utilizado para evitar execução de insert e update
- * desnecessários.
- *
- * @var boolean
- */
- private $objeto_alterado = false;
- /**
- * Método constutor da classe responsável por popular o objeto de acordo com a
- * chave identificadora do registro informado no parametro ou a criação de um
- * objeto vazio.
- *
- * @param integer cd_atendimento Chave identificadora do registro no banco de dados.
- * @return void
- */
- public function __construct($cd_atendimento = null)
- {
- switch (true)
- {
- case filter_var($cd_atendimento, FILTER_VALIDATE_INT, ['options' => ['min_range' => 1]]):
- $query = 'SELECT * FROM atendimento WHERE cd_atendimento = '.$cd_atendimento;
- $consulta = mysql_query($query);
- if (mysql_error())
- throw new Exception('Ocorreu um erro durante a consulta na tabela "atendimento", query: "'.$query.'".');
- if (mysql_num_rows($consulta) != 1)
- throw new Exception('Ocorreu um erro durante a consulta na tabela "atendimento", a chave identificadora é inválida: "'.$cd_atendimento.'".');
- $this->cd_atendimento = $cd_atendimento;
- $this->cd_usuario = mysql_result($consulta, 0, 'cd_usuario');
- $this->cd_uf = mysql_result($consulta, 0, 'cd_uf');
- $this->cd_cidade = mysql_result($consulta, 0, 'cd_cidade');
- $this->cd_bairro = mysql_result($consulta, 0, 'cd_bairro');
- break;
- case is_null($cd_atendimento):
- // Nada a fazer, é um novo objeto vazio
- break;
- default:
- throw new Exception('Tentativa de injection na classe '.__CLASS__.', variável $cd_atendimento recebeu o valor '.$cd_atendimento.' do tipo '.gettype($cd_atendimento));
- break;
- }
- }
- /**
- * Atribui o dado ao objeto de acordo com o atributo informado ou dispara exceção
- * caso atributo não exista.
- *
- * @param string $atributo Nome do atributo que irá receber o dado.
- * @param mixed $valor Dado a ser atribuido ao atributo.
- * @return void
- */
- public function __set($atributo, $valor)
- {
- switch ($atributo)
- {
- case 'cd_usuario':
- if (self::validarTipo($valor, 'integer'))
- $this->$atributo = $valor;
- else
- throw new Exception('O atributo '.$atributo.' deve receber um integer, mas foi informado um valor inválido '.$valor.' do tipo '.gettype($valor));
- break;
- case 'cd_uf':
- if (self::validarTipo($valor, 'integer'))
- $this->$atributo = $valor;
- else
- throw new Exception('O atributo '.$atributo.' deve receber um integer, mas foi informado um valor inválido '.$valor.' do tipo '.gettype($valor));
- break;
- case 'cd_cidade':
- if (self::validarTipo($valor, 'integer'))
- $this->$atributo = $valor;
- else
- throw new Exception('O atributo '.$atributo.' deve receber um integer, mas foi informado um valor inválido '.$valor.' do tipo '.gettype($valor));
- break;
- case 'cd_bairro':
- if (self::validarTipo($valor, 'integer'))
- $this->$atributo = $valor;
- else
- $this->$atributo = null;
- break;
- default:
- throw new Exception('Atributo '.$atributo.' desconhecido ou inválido da classe '.__CLASS__);
- break;
- }
- $this->objeto_alterado = true;
- }
- /**
- * Informa o dado do atributo solicitado ou dispara exceção caso atributo não
- * exista.
- *
- * @param string $atributo Nome do atributo que deseja obter seu respectivo dado.
- * @return mixed Valor do atributo no seu tipo original.
- */
- public function __get($atributo)
- {
- switch ($atributo)
- {
- case 'cd_atendimento':
- case 'cd_usuario':
- case 'cd_uf':
- case 'cd_cidade':
- case 'cd_bairro':
- return $this->$atributo;
- break;
- default:
- throw new Exception('Atributo '.$atributo.' desconhecido ou inválido da classe '. __CLASS__);
- break;
- }
- }
- /**
- * Valida os tipos de dados recebidos no método __set().
- *
- * @param mixed $valor Valor a ser validado.
- * @param string $tipo Tipo de dado a ser validado.
- * @return bool Retorna true caso seja um tipo válido ou false caso contra.
- */
- public static function validarTipo($valor, $tipo)
- {
- switch ($tipo)
- {
- case 'string':
- $retorno = is_string($valor);
- break;
- case 'integer':
- $retorno = filter_var($valor, FILTER_VALIDATE_INT) !== false;
- break;
- case 'float':
- $retorno = filter_var($valor, FILTER_VALIDATE_FLOAT) !== false;
- break;
- case 'boolean':
- $retorno = is_bool($valor);
- break;
- case 'datetime':
- if (self::validarTipo(substr($valor, 0, 4), 'datetime_year'))
- {
- DateTime::createFromFormat('Y-m-d H:i:s', $valor);
- $validar = DateTime::getLastErrors();
- $retorno = ($validar['warning_count'] == 0 && $validar['error_count'] == 0);
- }
- else
- $retorno = false;
- break;
- case 'datetime_year':
- if ($valor == '0000')
- $retorno = true;
- else
- $retorno = filter_var((int) $valor, FILTER_VALIDATE_INT, ['options' => ['min_range' => 1000, 'max_range' => 9999]]) !== false;
- break;
- case 'datetime_date':
- if ($valor === '0000-00-00')
- $retorno = true;
- else
- $retorno = self::validarTipo($valor.' '.date('H:i:s'), 'datetime');
- break;
- case 'datetime_time':
- if ($valor === '00:00:00')
- $retorno = true;
- else
- $retorno = self::validarTipo(date('Y-m-d').' '.$valor, 'datetime');
- break;
- case 'datetime_timestamp':
- $retorno = filter_var((int) $valor, FILTER_VALIDATE_INT, ['options' => ['min_range' => -2147483647, 'max_range' => 2147483647]]) !== false;
- break;
- default:
- $retorno = false;
- break;
- }
- return $retorno;
- }
- /**
- * Adiciona os dados do objeto no banco de dados e a geração de sua chave
- * identificadora.
- *
- * @return bool Retorna true ao final da operação com sucesso
- */
- public function adicionar()
- {
- if ($this->objeto_alterado)
- {
- if ($this->cd_atendimento)
- throw new Exception('Tentativa de adicionar ao banco de dados um registro ja existente.');
- $campos['cd_usuario'] = $this->cd_usuario;
- $campos['cd_uf'] = $this->cd_uf;
- $campos['cd_cidade'] = $this->cd_cidade;
- if (!is_null($this->cd_bairro))
- $campos['cd_bairro'] = $this->cd_bairro;
- $query = 'INSERT INTO atendimento (`'.implode('`, `', array_keys($campos)).'`) VALUES ('.implode(', ', $campos).')';
- mysql_query($query);
- if (mysql_error())
- throw new Exception('Ocorreu um erro durante a inclusão de atendimento no banco de dados: '.mysql_error());
- $this->cd_atendimento = mysql_insert_id();
- $this->objeto_alterado = false;
- return true;
- }
- }
- /**
- * Atualiza os dados do objeto no banco de dados.
- *
- * @return bool Retorna true ao final da operação com sucesso
- */
- public function atualizar()
- {
- if ($this->objeto_alterado)
- {
- if (!$this->cd_atendimento)
- throw new Exception('Tentativa de atualizar no banco de dados um registro inexistente.');
- $campos['cd_usuario'] = "`cd_usuario` = ".$this->cd_usuario;
- $campos['cd_uf'] = "`cd_uf` = ".$this->cd_uf;
- $campos['cd_cidade'] = "`cd_cidade` = ".$this->cd_cidade;
- if (!is_null($this->cd_bairro))
- $campos['cd_bairro'] = "`cd_bairro` = ".$this->cd_bairro;
- $query = 'UPDATE atendimento SET '.implode(', ', $campos).' WHERE cd_atendimento = '.$this->cd_atendimento;
- mysql_query($query);
- if (mysql_error())
- throw new Exception('Ocorreu um erro durante a alteração de atendimento no banco de dados: '.mysql_error());
- $this->objeto_alterado = false;
- return true;
- }
- }
- /**
- * Deleta o registro no banco de dados.
- *
- * @return bool Retorna true ao final da operação com sucesso
- */
- public function deletar()
- {
- if (!$this->cd_atendimento)
- throw new Exception('Tentativa de deletar do banco de dados um registro inexistente.');
- $query = 'DELETE FROM atendimento WHERE cd_atendimento = '.$this->cd_atendimento;
- mysql_query($query);
- if (mysql_error())
- throw new Exception('Ocorreu um erro durante a alteração de atendimento no banco de dados: '.mysql_error());
- return true;
- }
- /**
- * Realiza a consulta dos registros presentes no banco de dados de acordo com os
- * termos informados para a pesquisa.
- *
- * @param array $colunas dados a ser obtidos na consulta.
- * Exemplo: $colunas = array('nome', 'sobrenome', 'idade');
- * @param array $where termos a ser considerados na consulta.
- * Exemplo: $where = array('nome LIKE "%JOSE%"', 'idade > 5', 'data IS NULL');
- * @param array $ordem tipo de ordenação a ser obtido na consulta.
- * Exemplo: $ordem = array('coluna' => array('nome', 'sobrenome'), 'ordem' => 'ASC');
- * @param array $limite registro inicial e quantidade de registros a ser retornados na consulta.
- * Exemplo: $limite = array(0, 30);
- * @return array Retorna o resultado da consulta tendo o índice a chave identificadora apontando para os dados do registro.
- */
- public static function buscar($colunas = array(), $where = array(), $ordem = array(), $limite = array())
- {
- $query = 'SELECT '.($colunas ? implode(', ', $colunas) : '*').' ';
- $query .= 'FROM atendimento '.($where ? 'WHERE '.implode(' AND ', $where) : '');
- $query .= ($ordem ? ' ORDER BY '.implode(', ', $ordem['coluna']).' '.$ordem['ordem'] : '');
- $query .= ($limite ? ' LIMIT '.implode(', ', $limite) : '');
- $consulta = mysql_query($query);
- if(mysql_error())
- throw new Exception('Ocorreu um erro durante a consulta de dados em atendimento no banco de dados: '.mysql_error());
- $retorno = array();
- while($dados = mysql_fetch_array($consulta))
- {
- $retorno[$dados['cd_atendimento']]['cd_atendimento'] = $dados['cd_atendimento'];
- $retorno[$dados['cd_atendimento']]['cd_usuario'] = $dados['cd_usuario'];
- $retorno[$dados['cd_atendimento']]['cd_uf'] = $dados['cd_uf'];
- $retorno[$dados['cd_atendimento']]['cd_cidade'] = $dados['cd_cidade'];
- $retorno[$dados['cd_atendimento']]['cd_bairro'] = $dados['cd_bairro'];
- }
- return $retorno;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement