diff --git a/src/Cacic/CommonBundle/Entity/ComputadorColetaRepository.php b/src/Cacic/CommonBundle/Entity/ComputadorColetaRepository.php index 1ba62c3..87263e7 100644 --- a/src/Cacic/CommonBundle/Entity/ComputadorColetaRepository.php +++ b/src/Cacic/CommonBundle/Entity/ComputadorColetaRepository.php @@ -270,7 +270,76 @@ class ComputadorColetaRepository extends EntityRepository if ( array_key_exists('conf', $filtros) && !empty($filtros['conf']) ) $qb->andWhere('property.idClassProperty IN (:conf)')->setParameter('conf', explode( ',', $filtros['conf'] )); + return $qb->getQuery()->execute(); + } + + public function gerarRelatorioPatrimonio($filtros) + { + // Monta a Consulta básica... + $qb = $this->createQueryBuilder('coleta') + ->select( 'DISTINCT(comp.nmComputador), so.sgSo, class.nmPropertyName, coleta.teClassPropertyValue, + r.teIpRede, r.idRede, r.nmRede, l.nmLocal, comp.idComputador,so.inMswindows, u.nmUorg') + ->innerJoin('CacicCommonBundle:Computador', 'comp','WITH','coleta.computador = comp.idComputador') + ->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'comp.idComputador = prop.computador') + ->innerJoin('CacicCommonBundle:ClassProperty', 'class','WITH', 'coleta.classProperty = class.idClassProperty') + ->innerJoin('CacicCommonBundle:Classe', 'classe','WITH', 'class.idClass = classe.idClass') + ->leftJoin('CacicCommonBundle:So', 'so','WITH','comp.idSo = so.idSo') + ->leftJoin('CacicCommonBundle:Rede', 'r','WITH', 'comp.idRede = r.idRede') + ->innerJoin('CacicCommonBundle:Uorg','u','WITH', 'r.idRede = u.rede') + ->innerJoin('CacicCommonBundle:Local','l','WITH', 'r.idLocal = l.idLocal') + ->groupBy('comp.nmComputador,r.idRede, class.nmPropertyName, u.nmUorg, coleta.teClassPropertyValue,so.sgSo, r.teIpRede, l.nmLocal, r.nmRede, comp.idComputador,so.inMswindows') + ->orderBy('r.teIpRede, l.nmLocal'); + + /* + * Verifica os filtros que foram parametrizados + */ + + if ( array_key_exists('locais', $filtros) && !empty($filtros['locais']) ) + $qb->andWhere('l.idLocal IN (:locais)')->setParameter('locais', explode( ',', $filtros['locais'] )); + + if ( array_key_exists('so', $filtros) && !empty($filtros['so']) ) + $qb->andWhere('comp.idSo IN (:so)')->setParameter('so', explode( ',', $filtros['so'] )); + + if ( array_key_exists('conf', $filtros) && !empty($filtros['conf']) ) + $qb->andWhere('class.idClassProperty IN (:conf)')->setParameter('conf', explode( ',', $filtros['conf'] )); + + if ( array_key_exists('uorg', $filtros) && !empty($filtros['uorg']) ) + $qb->andWhere('u.idUorg IN (:uorg)')->setParameter('uorg', explode( ',', $filtros['uorg'] )); return $qb->getQuery()->execute(); } + + public function gerarRelatorioSemPatrimonio($filtros) + { + // Monta a Consulta básica... + $qb = $this->createQueryBuilder('coleta') + ->select( 'DISTINCT(comp.nmComputador), so.sgSo, + r.teIpRede, r.idRede, r.nmRede, l.nmLocal, comp.idComputador,so.inMswindows, u.nmUorg') + ->innerJoin('CacicCommonBundle:Computador', 'comp','WITH','coleta.computador = comp.idComputador') + ->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'comp.idComputador = prop.computador') + ->innerJoin('CacicCommonBundle:ClassProperty', 'class','WITH', 'coleta.classProperty = class.idClassProperty') + ->innerJoin('CacicCommonBundle:Classe', 'classe','WITH', 'class.idClass = classe.idClass') + ->leftJoin('CacicCommonBundle:So', 'so','WITH','comp.idSo = so.idSo') + ->leftJoin('CacicCommonBundle:Rede', 'r','WITH', 'comp.idRede = r.idRede') + ->innerJoin('CacicCommonBundle:Uorg','u','WITH', 'r.idRede = u.rede') + ->innerJoin('CacicCommonBundle:Local','l','WITH', 'r.idLocal = l.idLocal') + ->groupBy('comp.nmComputador,r.idRede, u.nmUorg,so.sgSo, r.teIpRede, l.nmLocal, r.nmRede, comp.idComputador,so.inMswindows') + ->orderBy('r.teIpRede, l.nmLocal'); + + /* + * Verifica os filtros que foram parametrizados + */ + + if ( array_key_exists('locais', $filtros) && !empty($filtros['locais']) ) + $qb->andWhere('l.idLocal IN (:locais)')->setParameter('locais', explode( ',', $filtros['locais'] )); + + if ( array_key_exists('so', $filtros) && !empty($filtros['so']) ) + $qb->andWhere('comp.idSo IN (:so)')->setParameter('so', explode( ',', $filtros['so'] )); + + + if ( array_key_exists('uorg', $filtros) && !empty($filtros['uorg']) ) + $qb->andWhere('u.idUorg IN (:uorg)')->setParameter('uorg', explode( ',', $filtros['uorg'] )); + + return $qb->getQuery()->execute(); + } } diff --git a/src/Cacic/CommonBundle/Entity/UorgRepository.php b/src/Cacic/CommonBundle/Entity/UorgRepository.php index 14e91df..0b64b78 100644 --- a/src/Cacic/CommonBundle/Entity/UorgRepository.php +++ b/src/Cacic/CommonBundle/Entity/UorgRepository.php @@ -15,7 +15,8 @@ class UorgRepository extends EntityRepository public function listar() { $_dql = "SELECT uorg.idUorg, uorg.nmUorg - FROM CacicCommonBundle:Uorg uorg"; + FROM CacicCommonBundle:Uorg uorg + ORDER BY uorg.uorgPai DESC, uorg.idUorg DESC "; return $this->getEntityManager()->createQuery( $_dql )->getArrayResult(); } diff --git a/src/Cacic/RelatorioBundle/Controller/DefaultController.php b/src/Cacic/RelatorioBundle/Controller/DefaultController.php index 9cd7110..a3de0f5 100644 --- a/src/Cacic/RelatorioBundle/Controller/DefaultController.php +++ b/src/Cacic/RelatorioBundle/Controller/DefaultController.php @@ -30,15 +30,13 @@ class DefaultController extends Controller { $locais = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->listar(); $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->listar(); - $sw = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->listarSoftware(); $uorg = $this->getDoctrine()->getRepository('CacicCommonBundle:Uorg')->listar(); $conf = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->listarPropriedades('Patrimonio'); -// + return $this->render( 'CacicRelatorioBundle:Default:patrimonio.html.twig', array( - 'sw' => $sw, 'locais' => $locais, 'so' => $so, 'conf' => $conf, @@ -51,22 +49,26 @@ class DefaultController extends Controller */ public function patrimonioRelatorioAction( Request $request ) { - $filtros = $request->get('rel_filtro_patrimonio'); - $locale = $request->getLocale(); - $dados = $this->getDoctrine() - ->getRepository('CacicCommonBundle:Software') - ->gerarRelatorioPatrimonio( $filtros ); + $filtros = $request->get('rel_filtro_patrimonio'); + $locale = $request->getLocale(); + + if($filtros['conf'] <> ""){ + $dados = $this->getDoctrine() + ->getRepository('CacicCommonBundle:ComputadorColeta') + ->gerarRelatorioPatrimonio( $filtros ); + } + else{ + $dados = $this->getDoctrine() + ->getRepository('CacicCommonBundle:ComputadorColeta') + ->gerarRelatorioSemPatrimonio( $filtros ); + } - // Debug::dump($filtros);die; return $this->render( 'CacicRelatorioBundle:Default:rel_patrimonio.html.twig', array( 'idioma'=>$locale, - 'dados' => $dados,/* - 'menu' => (bool) strlen( $filtros['pci']),*/ - 'exibirColunaSoftware' => (bool) strlen( $filtros['softwares'] - - ) + 'dados' => $dados, + 'menu' => (bool) strlen( $filtros['conf']) ) ); } diff --git a/src/Cacic/RelatorioBundle/Resources/views/Default/patrimonio.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Default/patrimonio.html.twig index 021e804..36a484e 100644 --- a/src/Cacic/RelatorioBundle/Resources/views/Default/patrimonio.html.twig +++ b/src/Cacic/RelatorioBundle/Resources/views/Default/patrimonio.html.twig @@ -14,19 +14,11 @@