<commit_before><?php

namespace Fonte\Service;

use \Fonte\Entity\FonteEntity as Entity;
use Fonte\Table\FonteTable;
use Zend\Db\Sql\Select;
use Zend\Db\ResultSet\HydratingResultSet;
use Zend\Stdlib\Hydrator\Reflection;
use Zend\Paginator\Adapter\DbSelect;
use Zend\Paginator\Paginator;

class FonteService extends Entity {

    public function getFonteToArray($id) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        #die($id);
        $select = $sql->select('fonte_questao')
            ->where([
                'fonte_questao.id_fonte_questao = ?' => $id,
                'fonte_questao.cs_ativo=1',
            ]);
        #print_r($sql->prepareStatementForSqlObject($select)->execute());exit;

        return $sql->prepareStatementForSqlObject($select)->execute()->current();
    }

    public function getFiltrarFontePorNomeToArray($nm_fonte_questao) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        $select = $sql->select('fonte_questao')
            ->columns(array('nm_fonte_questao', 'id_cidade') ) #Colunas a retornar. Basta Omitir que ele traz todas as colunas
            ->where([
                "fonte_questao.nm_fonte_questao LIKE ?" => '%'.$nm_fonte_questao.'%',
                'fonte_questao.cs_ativo=1',
            ]);

        return $sql->prepareStatementForSqlObject($select)->execute();
    }

    public function getIdFontePorNomeToArray($nm_fonte_questao) {

        $arNomeFonte = explode('(', $nm_fonte_questao);
        $nm_fonte_questao = $arNomeFonte[0];

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());
        $filter = new \Zend\Filter\StringTrim();
        $select = $sql->select('fonte_questao')
            ->columns(array('id_fonte_questao') )
            ->where([
                'fonte_questao.nm_fonte_questao = ?' => $filter->filter($nm_fonte_questao),
                'fonte_questao.cs_ativo=1',
            ]);

        return $sql->prepareStatementForSqlObject($select)->execute()->current();
    }

    /**
     * Busca apenas as Fontes que já estão relacionados a alguma questão
     *
     * @return null|\Zend\Db\ResultSet\ResultSetInterface
     */
    public function filtrarFontePorBancoQuestao() {
        $select = new \Zend\Db\Sql\Select('fonte_questao');
        $select->columns([
            'id_fonte_questao',
            'nm_fonte_questao'
        ])->join('questao', 'questao.id_fonte_questao = fonte_questao.id_fonte_questao');

        $select->order(['fonte_questao.nm_fonte_questao ASC']);

        return $this->getTable()->getTableGateway()->selectWith($select);
    }


    /**
     * Localizar itens por pagina��o
     *
     * @param type $pagina
     * @param type $itensPagina
     * @param type $ordem
     * @param type $like
     * @param type $itensPaginacao
     * @return type Paginator
     */
    public function fetchPaginator($pagina = 1, $itensPagina = 5, $ordem = 'nm_fonte_questao ASC', $like = null, $itensPaginacao = 5) {
        //http://igorrocha.com.br/tutorial-zf2-parte-9-paginacao-busca-e-listagem/4/
        // preparar um select para tabela contato com uma ordem
        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());
        $select = $sql->select('fonte_questao')->order($ordem);

        if (isset($like)) {
            $select
                    ->where
                    ->like('id_fonte_questao', "%{$like}%")
                    ->or
                    ->like('nm_fonte_questao', "%{$like}%")
            #->or
            #->like('telefone_principal', "%{$like}%")
            #->or
            #->like('data_criacao', "%{$like}%")
            ;
        }

        // criar um objeto com a estrutura desejada para armazenar valores
        $resultSet = new HydratingResultSet(new Reflection(), new \Fonte\Entity\FonteEntity());

        // criar um objeto adapter paginator
        $paginatorAdapter = new DbSelect(
                // nosso objeto select
                $select,
                // nosso adapter da tabela
                $this->getAdapter(),
                // nosso objeto base para ser populado
                $resultSet
        );

        # var_dump($paginatorAdapter);
        #die;
        // resultado da paginação
        return (new Paginator($paginatorAdapter))
                        // pagina a ser buscada
                        ->setCurrentPageNumber((int) $pagina)
                        // quantidade de itens na p�gina
                        ->setItemCountPerPage((int) $itensPagina)
                        ->setPageRange((int) $itensPaginacao);
    }

    /**
     * 
     * @param type $dtInicio
     * @param type $dtFim
     * @return type
     */
    public function getFontePaginator($filter = NULL, $camposFilter = NULL) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        $select = $sql->select('fonte_questao')->columns([
                    'id_fonte_questao',
                    'nm_fonte_questao'
                    
                    
                ]);
                /*->join('cidade', 'cidade.id_cidade = academias.id_cidade', [
                    'nm_cidade'
                ])
                ->join('estado', 'estado.id_estado = cidade.id_estado', [
                    'sg_estado'
                ]); */              
               

        $where = ['fonte_questao.cs_ativo=1',
        ];

        if (!empty($filter)) {

            foreach ($filter as $key => $value) {

                if ($value) {

                    if (isset($camposFilter[$key]['mascara'])) {
<commit_msg>[FIX] Fonte/FonteService.php: linhas comentadas para resolucao de loop infinito<commit_after><?php

namespace Fonte\Service;

use \Fonte\Entity\FonteEntity as Entity;
use Fonte\Table\FonteTable;
use Zend\Db\Sql\Select;
use Zend\Db\ResultSet\HydratingResultSet;
use Zend\Stdlib\Hydrator\Reflection;
use Zend\Paginator\Adapter\DbSelect;
use Zend\Paginator\Paginator;

class FonteService extends Entity {

    public function getFonteToArray($id) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        #die($id);
        $select = $sql->select('fonte_questao')
            ->where([
                'fonte_questao.id_fonte_questao = ?' => $id,
                #'fonte_questao.cs_ativo=1',
            ]);
        #print_r($sql->prepareStatementForSqlObject($select)->execute());exit;

        return $sql->prepareStatementForSqlObject($select)->execute()->current();
    }

    public function getFiltrarFontePorNomeToArray($nm_fonte_questao) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        $select = $sql->select('fonte_questao')
            ->columns(array('nm_fonte_questao', 'id_cidade') ) #Colunas a retornar. Basta Omitir que ele traz todas as colunas
            ->where([
                "fonte_questao.nm_fonte_questao LIKE ?" => '%'.$nm_fonte_questao.'%',
                #'fonte_questao.cs_ativo=1',
            ]);

        return $sql->prepareStatementForSqlObject($select)->execute();
    }

    public function getIdFontePorNomeToArray($nm_fonte_questao) {

        $arNomeFonte = explode('(', $nm_fonte_questao);
        $nm_fonte_questao = $arNomeFonte[0];

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());
        $filter = new \Zend\Filter\StringTrim();
        $select = $sql->select('fonte_questao')
            ->columns(array('id_fonte_questao') )
            ->where([
                'fonte_questao.nm_fonte_questao = ?' => $filter->filter($nm_fonte_questao),
                #'fonte_questao.cs_ativo=1',
            ]);

        return $sql->prepareStatementForSqlObject($select)->execute()->current();
    }

    /**
     * Busca apenas as Fontes que já estão relacionados a alguma questão
     *
     * @return null|\Zend\Db\ResultSet\ResultSetInterface
     */
    public function filtrarFontePorBancoQuestao() {
        $select = new \Zend\Db\Sql\Select('fonte_questao');
        $select->columns([
            'id_fonte_questao',
            'nm_fonte_questao'
        ])->join('questao', 'questao.id_fonte_questao = fonte_questao.id_fonte_questao');

        $select->order(['fonte_questao.nm_fonte_questao ASC']);

        return $this->getTable()->getTableGateway()->selectWith($select);
    }


    /**
     * Localizar itens por pagina��o
     *
     * @param type $pagina
     * @param type $itensPagina
     * @param type $ordem
     * @param type $like
     * @param type $itensPaginacao
     * @return type Paginator
     */
    public function fetchPaginator($pagina = 1, $itensPagina = 5, $ordem = 'nm_fonte_questao ASC', $like = null, $itensPaginacao = 5) {
        //http://igorrocha.com.br/tutorial-zf2-parte-9-paginacao-busca-e-listagem/4/
        // preparar um select para tabela contato com uma ordem
        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());
        $select = $sql->select('fonte_questao')->order($ordem);

        if (isset($like)) {
            $select
                    ->where
                    ->like('id_fonte_questao', "%{$like}%")
                    ->or
                    ->like('nm_fonte_questao', "%{$like}%")
            #->or
            #->like('telefone_principal', "%{$like}%")
            #->or
            #->like('data_criacao', "%{$like}%")
            ;
        }

        // criar um objeto com a estrutura desejada para armazenar valores
        $resultSet = new HydratingResultSet(new Reflection(), new \Fonte\Entity\FonteEntity());

        // criar um objeto adapter paginator
        $paginatorAdapter = new DbSelect(
                // nosso objeto select
                $select,
                // nosso adapter da tabela
                $this->getAdapter(),
                // nosso objeto base para ser populado
                $resultSet
        );

        # var_dump($paginatorAdapter);
        #die;
        // resultado da paginação
        return (new Paginator($paginatorAdapter))
                        // pagina a ser buscada
                        ->setCurrentPageNumber((int) $pagina)
                        // quantidade de itens na p�gina
                        ->setItemCountPerPage((int) $itensPagina)
                        ->setPageRange((int) $itensPaginacao);
    }

    /**
     * 
     * @param type $dtInicio
     * @param type $dtFim
     * @return type
     */
    public function getFontePaginator($filter = NULL, $camposFilter = NULL) {

        $sql = new \Zend\Db\Sql\Sql($this->getAdapter());

        $select = $sql->select('fonte_questao')->columns([
                    'id_fonte_questao',
                    'nm_fonte_questao'
                    
                    
                ]);
                /*->join('cidade', 'cidade.id_cidade = academias.id_cidade', [
                    'nm_cidade'
                ])
                ->join('estado', 'estado.id_estado = cidade.id_estado', [
                    'sg_estado'
                ]); */              
               

        $where = [#'fonte_questao.cs_ativo=1',
        ];

        if (!empty($filter)) {

            foreach ($filter as $key => $value) {

                if ($value) {

                    if (isset($camposFilter[$key]['mascara'])) {

{'fraction_non_alphanumeric': 0.13835518046327885, 'fraction_numerical': 0.0019752199676782187, 'mean_word_length': 1.9167321288295365, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 107, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6263645', 'n_tokens_mistral': 3572, 'n_tokens_neox': 3417, 'n_words': 586}