Advertisement
lordjackson

EmpresaList

Feb 23rd, 2015
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 8.57 KB | None | 0 0
  1. <?php
  2.  
  3. //ini_set('display_errors', 1);
  4. //ini_set('display_startup_erros', 1);
  5. //error_reporting(E_ALL);
  6. use Adianti\Database\TFilter1;
  7. use Adianti\Widget\Datagrid\TDatagridTables;
  8. /*
  9.  * classe EmpresaList
  10.  * Cadastro de Empresa: Contem a listagem e o formulario de busca
  11.  */
  12. include_once 'app/lib/funcdate.php';
  13.  
  14. class EmpresaList extends TPage {
  15.  
  16.     private $form;     // formulario de cadastro
  17.     private $datagrid; // listagem
  18.  
  19.     /*
  20.      * metodo construtor
  21.      * Cria a pagina, o formulario e a listagem
  22.      */
  23.  
  24.     public function __construct() {
  25.         parent::__construct();
  26.  
  27.         // instancia um formulario
  28.         $this->form = new TForm('form_busca_empresa');
  29.  
  30.         // instancia uma tabela
  31.         $panel = new TPanelForm(900, 100);
  32.  
  33.         // adiciona a tabela ao formulario
  34.         $this->form->add($panel);
  35.  
  36.         // cria um rótulo para o título
  37.         $titulo = new TLabel('Cadastro de Empresas');
  38.         $titulo->setFontFace('Arial');
  39.         $titulo->setFontColor('red');
  40.         $titulo->setFontSize(16);
  41.  
  42.         // adiciona o campo Titulo
  43.         $panel->put($titulo, $panel->getColuna(), $panel->getLinha());
  44.  
  45.         // cria os campos do formulario
  46.         $opcao = new TCombo('opcao');
  47.  
  48.         // cria um vetor com as opcoes da combo
  49.         $items = array();
  50.         $items['nome'] = 'Nome';
  51.         $items['cidade'] = 'Cidade';
  52.         $items['id'] = 'Codigo';
  53.         // adiciona as opcoes na combo
  54.         $opcao->addItems($items);
  55.         //coloca o valor padrao no combo
  56.         $opcao->setValue('nome');
  57.         $opcao->setSize(40);
  58.  
  59.         $nome = new TEntry('nome');
  60.         $nome->setSize(40);
  61.  
  62.         // cria um botao de acao (buscar)
  63.         $find_button = new TButton('busca');
  64.         // cria um botao de acao (cadastrar)
  65.         $new_button = new TButton('novo');
  66.  
  67.         // define a acao do botao buscar
  68.         $find_button->setAction(new TAction(array($this, 'onSearch')), 'Buscar');
  69.  
  70.         $obj = new EmpresaForm;
  71.         // define a acao do botao cadastrar
  72.         $new_button->setAction(new TAction(array($obj, 'onEdit')), 'Novo');
  73.  
  74.         // adiciona o campo
  75.         $panel->putCampo(null, 'Selecione o Campo:', 0, 0);
  76.         $panel->put($opcao, $panel->getColuna(), $panel->getLinha());
  77.         $panel->put($nome, $panel->getColuna(), $panel->getLinha());
  78.         $panel->put(new TLabel('Informe o Valor da Busca:'), $panel->getColuna(), $panel->getLinha());
  79.         $panel->put($new_button, $panel->getColuna(), $panel->getLinha());
  80.         $panel->put($find_button, $panel->getColuna(), $panel->getLinha());
  81.  
  82.         // define quais sao os campos do formulario
  83.         $this->form->setFields(array($nome, $find_button, $new_button));
  84.  
  85.         // instancia objeto DataGrid
  86.         $this->datagrid = new TDatagridTables;
  87.  
  88.         // instancia as colunas da DataGrid
  89.         $dgcodigo = new TDataGridColumn('id', 'Codigo', 'center', 50);
  90.         $dgnome = new TDataGridColumn('nome', 'Nome', 'left', 450);
  91.         $dgcidade = new TDataGridColumn('cidade', 'Cidade', 'left', 80);
  92.         $dgsigla = new TDataGridColumn('sigla', 'Sigla', 'left', 80);
  93.  
  94.         // adiciona as colunas a DataGrid
  95.         $this->datagrid->addColumn($dgcodigo);
  96.         $this->datagrid->addColumn($dgnome);
  97.         $this->datagrid->addColumn($dgcidade);
  98.         $this->datagrid->addColumn($dgsigla);
  99.  
  100.         // instancia duas acoes da DataGrid
  101.         $action1 = new TDataGridAction(array($obj, 'onEdit'));
  102.         $action1->setLabel('Editar');
  103.         $action1->setImage('ico_edit.png');
  104.         $action1->setField('id');
  105.  
  106.         $action2 = new TDataGridAction(array($this, 'onDelete'));
  107.         $action2->setLabel('Deletar');
  108.         $action2->setImage('ico_delete.png');
  109.         $action2->setField('id');
  110.  
  111.         // adiciona as acoes a DataGrid
  112.         $this->datagrid->addAction($action1);
  113.         $this->datagrid->addAction($action2);
  114.  
  115.         // cria o modelo da DataGrid, montando sua estrutura
  116.         $this->datagrid->createModel();
  117.  
  118.         // monta a paina atraves de uma tabela
  119.         $panel = new TPanelForm(900, 600);
  120.         $panel->put($this->form, 0, 0);
  121.         $panel->put($this->datagrid, 150, 100);
  122.  
  123.         // adiciona a tabela a pagina
  124.         parent::add($panel);
  125.     }
  126.  
  127.     /*
  128.      * metodo onReload()
  129.      * Carrega a DataGrid com os objetos do banco de dados
  130.      */
  131.  
  132.     function onReload() {
  133.         // inicia transacao com o banco 'pg_ceres'
  134.         TTransaction::open('pg_ceres');
  135.  
  136.         // instancia um repositorio para Carros
  137.         $repository = new TRepository('EmpresaRecord');
  138.  
  139.         // carrega os objetos de acordo com o criterio
  140.         $cadastros = $repository->load($criteria);
  141.  
  142.         $this->datagrid->clear();
  143.         if ($cadastros) {
  144.             // percorre os objetos retornados
  145.             foreach ($cadastros as $cadastro) {
  146.                 // adiciona o objeto na DataGrid
  147.                 $this->datagrid->addItem($cadastro);
  148.             }
  149.         }
  150.  
  151.  
  152.         // finaliza a transacao
  153.         TTransaction::close();
  154.         $this->loaded = true;
  155.     }
  156.  
  157.     /*
  158.      * metodo onSearch()
  159.      * Carrega a DataGrid com os objetos do banco de dados
  160.      */
  161.  
  162.     function onSearch() {
  163.         // inicia transacao com o banco 'pg_ceres'
  164.         TTransaction::open('pg_ceres');
  165.  
  166.         // instancia um repositorio para Carros
  167.         $repository = new TRepository('EmpresaRecord');
  168.  
  169.         //obtem os dados do formulario de busca
  170.         $campo = $this->form->getFieldData('opcao');
  171.         $dados = $this->form->getFieldData('nome');
  172.  
  173.         // cria um criterio de selecao, ordenado pelo id
  174.         $criteria = new TCriteria;
  175.         $criteria->setProperty('order', 'id DESC');
  176.  
  177.         //verifica se o usuario preencheu o formulario
  178.         if ($dados) {
  179.             if (is_numeric($dados)) {
  180.                 $criteria->add(new TFilter($campo, '=', $dados));
  181.             } else {
  182.                 //filtra pelo campo selecionado pelo campo ignore case
  183.                 $criteria->add(new TFilter1('special_like(' . $campo . ",'" . $dados . "')"));
  184.             }
  185.         }
  186.         var_dump($criteria->dump());
  187.  
  188.         // carrega os objetos de acordo com o criterio
  189.         $cadastros = $repository->load($criteria);
  190.  
  191.         $this->datagrid->clear();
  192.         if ($cadastros) {
  193.             // percorre os objetos retornados
  194.             foreach ($cadastros as $cadastro) {
  195.                 // adiciona o objeto na DataGrid
  196.                 $this->datagrid->addItem($cadastro);
  197.             }
  198.         }
  199.  
  200.         // finaliza a transacao
  201.         TTransaction::close();
  202.         $this->loaded = true;
  203.     }
  204.  
  205.     /*
  206.      * metodo onDelete()
  207.      * Executada quando o usuario clicar no botao excluir da datagrid
  208.      * Pergunta ao usuario se deseja realmente excluir um registro
  209.      */
  210.  
  211.     function onDelete($param) {
  212.         // obtem o parametro $key
  213.         $key = $param['key'];
  214.  
  215.         // define duas acoes
  216.         $action1 = new TAction(array($this, 'Delete'));
  217.         //  $action2 = new TAction(array($this, 'NaoDelete'));
  218.         // define os parametros de cada acao
  219.         $action1->setParameter('key', $key);
  220.         $action1->setParameter('msg', 'delete');
  221.         // $action2->setParameter('key', $key);
  222.         // exibe um dialogo ao usuario
  223.         new TQuestion('Deseja realmente excluir o registro ?', $action1);
  224.     }
  225.  
  226.     /*
  227.      * metodo Delete()
  228.      * Exclui um registro
  229.      */
  230.  
  231.     function Delete($param) {
  232.         // obtem o parametro $key
  233.         $key = $param['key'];
  234.         // inicia transacao com o banco 'pg_ceres'
  235.         TTransaction::open('pg_ceres');
  236.  
  237.         // instanicia objeto Record
  238.         $cadastro = new EmpresaRecord($key);
  239.  
  240.         try {
  241.             // deleta objeto do banco de dados
  242.             $cadastro->delete();
  243.  
  244.             // finaliza a transacao
  245.             TTransaction::close();
  246.         } catch (Exception $e) { // em caso de exce��o
  247.             // exibe a mensagem gerada pela exce��o
  248.             new TMessage('error', $e->getMessage());
  249.             // desfaz todas altera��es no banco de dados
  250.             TTransaction::rollback();
  251.         }
  252.  
  253.         // re-carrega a datagrid
  254.         $this->onReload();
  255.         // exibe mensagem de sucesso
  256.         //new TMessage('info', "Registro Excluido com sucesso");
  257.     }
  258.  
  259.     /*
  260.      * metodo show()
  261.      * Exibe a pagina
  262.      */
  263.  
  264.     function show() {
  265.         // carrega os dados no datagrid
  266.         $this->onReload();
  267.         //chama o metodo show da super classe
  268.         parent::show();
  269.     }
  270.  
  271. }
  272.  
  273. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement