/** * Procura modelo de documentos de acordo com os parâmetros * @param array $params Parâmetros da requisição * @return mixed Query Builder */ public function listGrid(\Core_Dto_Search $dto) { $queryBuilder = $this->_em->createQueryBuilder()->select('DISTINCT md.sqModeloDocumento, pmd.sqPadraoModeloDocumento, pmd.noPadraoModeloDocumento, td.noTipoDocumento, a.txAssunto, md.inAtivo')->from('app:ModeloDocumento', 'md')->innerJoin('md.sqModeloDocumentoCampo', 'mdc')->innerJoin('md.sqTipoDocumento', 'td')->leftJoin('md.sqAssunto', 'a')->innerJoin('mdc.sqPadraoModeloDocumentoCam', 'pmdc')->innerJoin('pmdc.sqPadraoModeloDocumento', 'pmd')->andWhere('md.inAtivo = TRUE')->orderBy('pmd.noPadraoModeloDocumento, td.noTipoDocumento, a.txAssunto', 'ASC'); if ($dto->hasSqPadraoModeloDocumento() && $dto->getSqPadraoModeloDocumento()) { $queryBuilder->andWhere('pmdc.sqPadraoModeloDocumento = :PadraoModeloDoc')->setParameter('PadraoModeloDoc', $dto->getSqPadraoModeloDocumento(), 'integer'); } if ($dto->hasSqAssunto() && $dto->getSqAssunto()) { $queryBuilder->andWhere('md.sqAssunto = :assunto')->setParameter('assunto', $dto->getSqAssunto(), 'integer'); } if ($dto->hasSqTipoDocumento() && $dto->getSqTipoDocumento()) { $queryBuilder->andWhere('md.sqTipoDocumento = :tipoDoc')->setParameter('tipoDoc', $dto->getSqTipoDocumento(), 'integer'); } return $queryBuilder; }