Exemplo n.º 1
0
 /**
  * Pega os dados para executar o grid
  * 
  * @param ZendT_Db_Where|ZendT_Db_Where_Group $where;
  * @param array $postData;
  * @return ZendT_Grid_Data
  */
 public function getDataGrid($where, $postData)
 {
     $cmdWhere = $where->getSqlWhere();
     $binds = $where->getBinds();
     /**
      * Retorna os dados através do objeto Data
      * para facilar a codificação na action
      */
     /**
      * Através dos dados postados adquire as informações
      * para paginar os dados e ordená-los
      */
     $pager = new ZendT_Grid_Paginator($postData);
     /**
      * SQL base
      */
     $sqlBase = " FROM " . $this->getTableName() . " wf_transacao\n                     JOIN projta.wf_fase wf_fase ON (wf_transacao.id_wf_fase = wf_fase.id) \n                     JOIN projta.wf_processo wf_processo ON (wf_fase.id_wf_processo = wf_processo.id) \n                     JOIN prouser.usuario usuario_aloc ON (wf_transacao.id_usuario_aloc = usuario_aloc.id) \n                     WHERE " . $cmdWhere;
     /**
      * Pega o número de registro para paginação
      */
     $sql = "SELECT COUNT(*) as total " . $sqlBase;
     $numRows = $this->getAdapter()->fetchOne($sql, $binds);
     /**
      * Coloca as colunas que serão retornadas
      */
     $sql = "SELECT wf_transacao.* ";
     $sql .= "     , wf_fase.descricao as descricao_wf_fase";
     $sql .= "     , usuario_aloc.nome as nome_usuario_aloc";
     $sql .= "     , wf_processo.descricao as descricao_processo";
     $sql .= $sqlBase;
     /**
      * Configura a coluna de ordenação
      */
     $sql .= "ORDER BY " . $pager->getOrderBy();
     /**
      * Configura o range de dados que será buscado
      */
     if (!isset($postData['noPage'])) {
         $sql = $this->getAdapter()->limit($sql, $pager->getLimitCount(), $pager->getLimitOffset());
     }
     /**
      * Pega os dados
      */
     $stmt = $this->getAdapter()->query($sql, $binds);
     $this->_columnMappers['nome_usuario_aloc'] = array('mapper' => 'Auth_Model_Usuario_Mapper', 'column' => 'nome');
     $this->_columnMappers['descricao_processo'] = array('mapper' => 'Wf_Model_WfProcesso_Mapper', 'column' => 'descricao');
     $mapperObservacao = $this->getMapper()->getObservacao(true);
     $mapperObservacao->addFilter('nl2br');
     $this->_columnMappers['observacao'] = array('mapper' => $mapperObservacao);
     /**
               * Retorna os dados através do objeto Data          
     *          * para facilar a codificação na action          */
     $data = new ZendT_Grid_Data($stmt, $this->_columnMappers);
     $data->setNumRows($numRows);
     $data->setNumPage($pager->getNumPage());
     return $data;
 }
Exemplo n.º 2
0
 /**
  * Pega os dados para executar o grid
  * 
  * @param ZendT_Db_Where|ZendT_Db_Where_Group $where;
  * @param array $postData;
  * @return ZendT_Grid_Data
  */
 public function getDataGrid($where, $postData)
 {
     $cmdWhere = $where->getSqlWhere();
     $binds = $where->getBinds();
     /**
      * Retorna os dados através do objeto Data
      * para facilar a codificação na action
      */
     /**
      * Através dos dados postados adquire as informações
      * para paginar os dados e ordená-los
      */
     $pager = new ZendT_Grid_Paginator($postData);
     /**
      * SQL base
      */
     $sqlBase = " FROM " . $this->getTableName() . " wf_processo\n                     LEFT JOIN prouser.aplicacao aplicacao ON (wf_processo.id_aplicacao = aplicacao.id) \n                     WHERE " . $cmdWhere;
     /**
      * Pega o número de registro para paginação
      */
     $sql = "SELECT COUNT(*) as total " . $sqlBase;
     $numRows = $this->getAdapter()->fetchOne($sql, $binds);
     /**
      * Coloca as colunas que serão retornadas
      */
     $sql = "SELECT   wf_processo.* ";
     $sql .= "     , aplicacao.sigla as sigla_aplicacao";
     $sql .= "     , aplicacao.nome as nome_aplicacao";
     $sql .= $sqlBase;
     /**
      * Configura a coluna de ordenação
      */
     $sql .= "ORDER BY " . $pager->getOrderBy();
     /**
      * Configura o range de dados que será buscado
      */
     if (!isset($postData['noPage'])) {
         $sql = $this->getAdapter()->limit($sql, $pager->getLimitCount(), $pager->getLimitOffset());
     }
     /**
      * Pega os dados
      */
     $stmt = $this->getAdapter()->query($sql, $binds);
     /**
               * Retorna os dados através do objeto Data          
     *          * para facilar a codificação na action          */
     $data = new ZendT_Grid_Data($stmt, $this->_columnMappers);
     $data->setNumRows($numRows);
     $data->setNumPage($pager->getNumPage());
     return $data;
 }
Exemplo n.º 3
0
 /**
  * Monta o recorset para a visão
  *
  * @param ZendT_Db_Where $where
  * @param array $postData
  * @return ZendT_Grid_Data 
  */
 public function getDataGrid($where, $postData, $retrieve = false, $found = false)
 {
     /**
      * Através dos dados postados adquire as informações
      * para paginar os dados e ordená-los
      */
     $pager = new ZendT_Grid_Paginator($postData);
     /**
      * Monta a base do SQL 
      */
     if ($found) {
         $cmdSelect = " SELECT 1 as found ";
     } else {
         $cmdSelect = " SELECT " . $this->getColumns($retrieve)->getColumnsSelect($retrieve, '*', $this->getModel()->getAdapter());
     }
     $cmdFrom = "   FROM " . $this->_getSqlBase();
     /**
      * Trata a entrada do Where para ser um Grupo de Where 
      */
     if ($where instanceof ZendT_Db_Where_Group) {
         $whereGroup = $where;
     } else {
         if ($where instanceof ZendT_Db_Where) {
             $whereGroup = new ZendT_Db_Where_Group();
             $whereGroup->addWhere($where);
         } else {
             $whereGroup = new ZendT_Db_Where_Group();
         }
     }
     /**
      * Avalia se existe algum Where específico do MapperView
      * colocando o mesmo dentro do objeto que agrupa os wheres
      */
     $_whereMapperView = $this->_getWhere($postData, $where);
     if ($_whereMapperView) {
         $whereGroup->addWhere($_whereMapperView);
     }
     /**
      * Monta o comando Where
      */
     $binds = $whereGroup->getBinds();
     $cmdWhere = "  WHERE " . $whereGroup->getSqlWhere();
     if ($found) {
         $cmdWhere .= " AND rownum = 1 ";
     }
     /**
      * Define a ordenação
      */
     $orderBy = $this->_getOrderBy();
     if ($orderBy) {
         $cmdOrderBy = "  ORDER BY " . $orderBy;
     } else {
         $orderBy = str_replace("expression.", "", $pager->getOrderBy());
         $cmdOrderBy = "  ORDER BY " . $orderBy;
     }
     /**
      * Pega o número de registro para paginação
      */
     if (!isset($postData['count'])) {
         $postData['count'] = true;
     }
     if (!isset($postData['page'])) {
         if (isset($postData['noPage'])) {
             $postData['page'] = false;
         } else {
             $postData['page'] = true;
         }
     }
     $numRows = 0;
     if ($postData['count']) {
         $sql = $this->getModel()->getAdapter()->sqlCount($cmdFrom, $cmdWhere, $pager->getLimitCount(), $pager->getLimitOffset());
         $this->_prepareSql($sql, $binds, 'count');
         $numRows = $this->getModel()->getAdapter()->fetchOne($sql, $binds);
     }
     /**
      * Configura o range de dados que será buscado
      */
     if ($postData['page']) {
         $sql = $this->getModel()->getAdapter()->sqlLimit($cmdSelect, $cmdFrom, $cmdWhere, $cmdOrderBy, $pager->getLimitCount(), $pager->getLimitOffset());
         $this->_prepareSql($sql, $binds, 'limit');
     } else {
         $sql = $cmdSelect . $cmdFrom . $cmdWhere . $cmdOrderBy;
         $this->_prepareSql($sql, $binds, 'full');
     }
     /**
      * Pega os dados
      */
     $stmt = $this->getModel()->getAdapter()->query($sql, $binds);
     /**
      * Retorna os dados através do objeto Data
      * para facilar a codificação na action
      */
     if ($found) {
         $mapper = new ZendT_Db_Column_Mapper();
         $mapper->add('found', new ZendT_Type_Number());
         $data = new ZendT_Grid_Data($stmt, $mapper, true);
     } else {
         $data = new ZendT_Grid_Data($stmt, $this->getColumns($retrieve)->getColumnsMapper(), true);
     }
     $replaceAlias = $this->getColumns($retrieve)->getReplaceAlias();
     if (count($replaceAlias) > 0) {
         foreach ($replaceAlias as $alias => $newAlias) {
             $data->addReplaceAlias($newAlias, $alias);
         }
     }
     $data->setNumRows($numRows);
     $data->setNumPage($pager->getNumPage());
     return $data;
 }