ClasseRepository.php 3.15 KB
<?php

namespace Cacic\CommonBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * ClasseRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ClasseRepository extends EntityRepository
{

    /**
     *
     * Método de listagem das classes de coleta
     */
    public function listar()
    {
        // TODO: Remover a lista fixa de classes excluídas e parametrizar a informação
        $_dql = "SELECT c
				FROM CacicCommonBundle:Classe c
				WHERE c.nmClassName NOT IN ('SoftwareList', 'Patrimonio')
				ORDER BY c.nmClassName";

        return $this->getEntityManager()->createQuery( $_dql )->getArrayResult();
    }

    public function listaDetalhesClasse( $idAcao )
    {
        $_dql = "SELECT c.nmClassName,cp.nmPropertyName,cd.teWhereClause, cp.idClassProperty
				 FROM CacicCommonBundle:Classe c,
				 CacicCommonBundle:ClassProperty cp,
				 CacicCommonBundle:CollectDefClass cd
				 WHERE 	cd.idAcao = :idAcao
				 AND c.idClass = cd.idClass
				 AND cp.idClass = cd.idClass
				 ORDER BY c.nmClassName,cp.nmPropertyName";

        return $this->getEntityManager()
            ->createQuery( $_dql )
            ->setParameter( 'idAcao', $idAcao )
            ->getArrayResult();
    }

    public function listaDetalhesClasseAcoes( $idClass )
    {
        $_dql = "SELECT a.idAcao,
                 a.teDescricaoBreve,
                 a.teDescricao,
                 a.teNomeCurtoModulo,
                 a.dtHrAlteracao,
                 a.csOpcional,
                 cl.idClass,
                 cl.nmClassName,
                 cl.teClassDescription,
                 cp.idClassProperty,
                 cp.nmPropertyName,
                 cp.tePropertyDescription,
                 cp.nmFunctionPreDb,
                 cp.nmFunctionPosDb,
                 dc.idCollectDefClass,
                 dc.teWhereClause
                 FROM CacicCommonBundle:CollectDefClass dc,
                 CacicCommonBundle:Classe cl,
                 CacicCommonBundle:Acao a,
                 CacicCommonBundle:ClassProperty cp
                 WHERE cl.idClass = dc.idClass
                 AND dc.idAcao = a.idAcao
                 AND cl.idClass = cp.idClass
                 AND a.idAcao = :idClass";

        /*$_dql = "SELECT c, a, cp, dc
                 FROM CacicCommonBundle:CollectDefClass dc,
                 CacicCommonBundle:ClassProperty cp
                 JOIN dc.idClass c
                 JOIN dc.idAcao a
                 WHERE cp.idClass = c.idClass
                 AND c.idClass = :idClass";*/

        return $this->getEntityManager()
            ->createQuery( $_dql )
            ->setParameter( 'idClass', $idClass )
            ->getArrayResult();
    }

    public function listaPorPropertyNotificacao( $properties )
    {
        $_dql = "SELECT c, cp
				 FROM CacicCommonBundle:Classe c,
				 CacicCommonBundle:ClassProperty cp
				 WHERE c.idClass = cp.idClass AND
                 cp.idClassProperty IN ( :properties )";

        return $this->getEntityManager()
            ->createQuery( $_dql )
            ->setParameter('properties', explode(',', $properties))
            ->getArrayResult();
    }
}