/** * 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; }
/** * 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; }
/** * 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; }