+ {% for key, rede in subredes %}
+
+ {{ rede['teIpRede'] }} |
{{ rede['nmRede'] }} |
{{ rede['teServUpdates'] }} |
- {{ rede['sgLocal'] }} |
+ {{ rede['nmLocal'] }} |
+ {{ rede['codigo']|raw }} |
|
diff --git a/src/Cacic/CommonBundle/Resources/views/Usuario/index.html.twig b/src/Cacic/CommonBundle/Resources/views/Usuario/index.html.twig
index b7220c6..d1ab333 100755
--- a/src/Cacic/CommonBundle/Resources/views/Usuario/index.html.twig
+++ b/src/Cacic/CommonBundle/Resources/views/Usuario/index.html.twig
@@ -41,7 +41,7 @@
{{ usuario['numLocSec'] }}
|
- {{ usuario['nmGrupoUsuarios'] }} |
+ {{ usuario['teGrupoUsuarios'] }} |
diff --git a/src/Cacic/RelatorioBundle/Controller/HardwareController.php b/src/Cacic/RelatorioBundle/Controller/HardwareController.php
index 99559d1..9842987 100644
--- a/src/Cacic/RelatorioBundle/Controller/HardwareController.php
+++ b/src/Cacic/RelatorioBundle/Controller/HardwareController.php
@@ -17,6 +17,7 @@ class HardwareController extends Controller
$conf = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->listar();
$locais = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->listar();
$so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->listar();
+
return $this->render(
'CacicRelatorioBundle:Hardware:configuracoes_filtro.html.twig',
@@ -34,7 +35,7 @@ class HardwareController extends Controller
public function configuracoesRelatorioAction( Request $request )
{
$dados = $this->getDoctrine()
- ->getRepository('CacicCommonBundle:Computador')
+ ->getRepository('CacicCommonBundle:ComputadorColeta')
->gerarRelatorioConfiguracoes( $request->get('rel_filtro_hardware') );
$locale = $request->getLocale();
return $this->render(
@@ -45,5 +46,89 @@ class HardwareController extends Controller
)
);
}
+
+ /*
+ * Relatório genérico para qualquer classe WMI
+ */
+
+ public function wmiAction( Request $request, $classe)
+ {
+ $conf = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->listarPropriedades($classe);
+ $locais = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->listar();
+ $so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->listar();
+ $redes = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->listar();
+
+ return $this->render(
+ 'CacicRelatorioBundle:Hardware:wmi_filtro.html.twig',
+ array(
+ 'conf' => $conf,
+ 'locais' => $locais,
+ 'so' => $so,
+ 'redes' => $redes,
+ 'classe' => $classe
+ )
+ );
+ }
+
+ /**
+ * [RELATÓRIO] Relatório de atributos da classe WMI gerado à partir dos filtros informados
+ */
+ public function wmiRelatorioAction( Request $request, $classe )
+ {
+ $dados = $this->getDoctrine()
+ ->getRepository('CacicCommonBundle:ComputadorColeta')
+ ->gerarRelatorioWMI( $filtros = $request->get('rel_filtro_hardware'), $classe = $classe );
+
+ $locale = $request->getLocale();
+ return $this->render(
+ 'CacicRelatorioBundle:Hardware:rel_wmi.html.twig',
+ array(
+ 'idioma'=> $locale,
+ 'dados' => $dados,
+ 'classe' => $classe
+ )
+ );
+ }
+
+ /**
+ * [RELATÓRIO] Relatório de atributos da classe WMI gerado à partir dos filtros informados detalhado
+ */
+ public function wmiRelatorioDetalheAction( Request $request, $classe, $propriedade )
+ {
+ $filtros['conf'] = $propriedade;
+ $rede = $request->get('rede');
+ $local = $request->get('local');
+ $so = $request->get('so');
+
+ // Adiciona rede à lista de filtros se for fornecido
+ if (!empty($rede)) {
+ $filtros['rede'] = $rede;
+ }
+
+ // Adiciona local à lista de filtros se for fornecido
+ if (!empty($local)) {
+ $filtros['locais'] = $local;
+ }
+
+ // Adiciona SO à lista de filtros se for fornecido
+ if (!empty($so)) {
+ $filtros['so'] = $so;
+ }
+
+ $dados = $this->getDoctrine()
+ ->getRepository('CacicCommonBundle:ComputadorColeta')
+ ->gerarRelatorioWMIDetalhe( $filtros = $filtros, $classe = $classe );
+
+ $locale = $request->getLocale();
+ return $this->render(
+ 'CacicRelatorioBundle:Hardware:rel_wmi_detalhe.html.twig',
+ array(
+ 'idioma'=> $locale,
+ 'dados' => $dados,
+ 'propriedade' => $propriedade,
+ 'classe' => $classe
+ )
+ );
+ }
}
diff --git a/src/Cacic/RelatorioBundle/Controller/SoftwareController.php b/src/Cacic/RelatorioBundle/Controller/SoftwareController.php
index be077c9..f1ee7ef 100644
--- a/src/Cacic/RelatorioBundle/Controller/SoftwareController.php
+++ b/src/Cacic/RelatorioBundle/Controller/SoftwareController.php
@@ -2,6 +2,7 @@
namespace Cacic\RelatorioBundle\Controller;
+use Doctrine\Common\Util\Debug;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Cacic\RelatorioBundle\Form\Type\FiltroSoftwareType;
@@ -17,6 +18,7 @@ class SoftwareController extends Controller
{
$locais = $this->getDoctrine()->getRepository('CacicCommonBundle:Local')->listar();
$so = $this->getDoctrine()->getRepository('CacicCommonBundle:So')->listar();
+ $redes = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->listar();
$sw = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->listar();
return $this->render(
@@ -24,6 +26,7 @@ class SoftwareController extends Controller
array(
'softwares' => $sw,
'locais' => $locais,
+ 'redes' => $redes,
'so' => $so
)
);
@@ -38,7 +41,7 @@ class SoftwareController extends Controller
$dados = $this->getDoctrine()
->getRepository('CacicCommonBundle:Software')
->gerarRelatorioSoftwaresInventariados( $request->get('rel_filtro_software') );
-
+
return $this->render(
'CacicRelatorioBundle:Software:rel_inventariados.html.twig',
array(
@@ -47,6 +50,20 @@ class SoftwareController extends Controller
)
);
}
+ public function listarAction( Request $request, $idSoftware )
+ {
+ $locale = $request->getLocale();
+ $dados = $this->getDoctrine()
+ ->getRepository('CacicCommonBundle:Software')
+ ->getSoftwareDadosComputador( $idSoftware );
+
+ return $this->render( 'CacicRelatorioBundle:Software:listar.html.twig',
+ array(
+ 'idioma' =>$locale,
+ 'dados' => $dados
+ )
+ );
+ }
/**
*
@@ -187,7 +204,7 @@ class SoftwareController extends Controller
$dados = $this->getDoctrine()
->getRepository('CacicCommonBundle:Software')
->gerarRelatorioSoftwaresPorTipo( $request->get('form') );
-
+
return $this->render(
'CacicRelatorioBundle:Software:rel_tipo.html.twig',
array(
@@ -215,5 +232,27 @@ class SoftwareController extends Controller
)
);
}
-
+
+ /**
+ * [RELATÓRIO] Lista de máquinas que possuem o software instalado
+ *
+ * @param software O Nome do software a ser listado
+ */
+
+ public function listaAction(Request $request, $software) {
+ $locale = $request->getLocale();
+
+ $dados = $this->getDoctrine()
+ ->getRepository('CacicCommonBundle:ComputadorColeta')
+ ->gerarRelatorioSoftware($filtros = array(), $software);
+
+ return $this->render(
+ 'CacicRelatorioBundle:Software:rel_software_lista.html.twig',
+ array(
+ 'idioma'=> $locale,
+ 'software' => $software,
+ 'dados' => $dados
+ )
+ );
+ }
}
diff --git a/src/Cacic/RelatorioBundle/Menu/Builder.php b/src/Cacic/RelatorioBundle/Menu/Builder.php
new file mode 100644
index 0000000..1bd04e2
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Menu/Builder.php
@@ -0,0 +1,40 @@
+container->get('logger');
+
+ // Cria menu
+ $menu = $factory->createItem('root');
+ //$menu->addChild('Configurações', array('route' => 'cacic_relatorio_hardware_configuracoes'));
+
+ // Carrega lista de classes WMI para coleta
+ $em = $this->container->get('doctrine')->getEntityManager();
+ $classes = $em->getRepository('CacicCommonBundle:ComputadorColeta')->menu();
+
+ // Adiciona cada uma das classes como slug para um controller
+ foreach ($classes as $wmiClass) {
+ $menu->addChild($wmiClass['nmClassName'], array(
+ 'route' => 'cacic_relatorio_hardware_wmi',
+ 'routeParameters' => array(
+ 'classe' => $wmiClass['nmClassName']
+ )
+ ));
+ }
+
+ return $menu;
+ }
+}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/config/routing.yml b/src/Cacic/RelatorioBundle/Resources/config/routing.yml
index df2103c..a0062ba 100644
--- a/src/Cacic/RelatorioBundle/Resources/config/routing.yml
+++ b/src/Cacic/RelatorioBundle/Resources/config/routing.yml
@@ -30,6 +30,12 @@ cacic_relatorio_software_inventariados_rel:
requirements:
_method: POST
+cacic_relatorio_software_listar:
+ pattern: /software/listar/{idSoftware}
+ defaults: { _controller: CacicRelatorioBundle:Software:listar, idSoftware: null }
+ requirements:
+ idSoftware: \d+
+
cacic_relatorio_software_licenciados:
pattern: /software/licenciados
defaults: { _controller: CacicRelatorioBundle:Software:licenciados }
@@ -84,4 +90,24 @@ cacic_relatorio_hardware_configuracoes_rel:
pattern: /hardware/configuracoes
defaults: { _controller: CacicRelatorioBundle:Hardware:configuracoesRelatorio }
requirements:
- _method: POST
\ No newline at end of file
+ _method: POST
+
+cacic_relatorio_hardware_wmi:
+ pattern: /hardware/{classe}
+ defaults: { _controller: CacicRelatorioBundle:Hardware:wmi }
+ requirements:
+ _method: GET
+
+cacic_relatorio_hardware_wmi_rel:
+ pattern: /hardware/{classe}
+ defaults: { _controller: CacicRelatorioBundle:Hardware:wmiRelatorio }
+ requirements:
+ _method: POST
+
+cacic_relatorio_software_lista:
+ pattern: /software/inventariados/{software}
+ defaults: { _controller: CacicRelatorioBundle:Software:lista }
+
+cacic_relatorio_hardware_wmi_detalhe:
+ pattern: /hardware/{classe}/{propriedade}
+ defaults: { _controller: CacicRelatorioBundle:Hardware:wmiRelatorioDetalhe }
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Hardware/configuracoes_filtro.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Hardware/configuracoes_filtro.html.twig
index a3377ac..ea6638b 100644
--- a/src/Cacic/RelatorioBundle/Resources/views/Hardware/configuracoes_filtro.html.twig
+++ b/src/Cacic/RelatorioBundle/Resources/views/Hardware/configuracoes_filtro.html.twig
@@ -20,7 +20,7 @@
tConf.populate([ // Popula o TRANSFER com as Classes de Coleta
{% for c in conf %}
- {value: "{{ c.idClass }}", content:"{{ c.teClassDescription }}"}{% if loop.last != true %},{% endif %}
+ {value: "{{ c.idClass }}", content: "{{ c.nmClassName|e('js') }}" }{% if loop.last != true %},{% endif %}
{% endfor %}
]);
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_configuracoes.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_configuracoes.html.twig
index 68758d1..bbfd010 100644
--- a/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_configuracoes.html.twig
+++ b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_configuracoes.html.twig
@@ -25,9 +25,9 @@
{% if reg.nmComputador %} {{ reg.teNodeAddress }}{% endif %}
{% if reg.teIpComputador %} {{ reg.teIpComputador }}{% endif %}
|
- {{ reg.idSo.sgSo}} |
- {%if reg.idRede is not null and reg.idRede.idLocal is not null %}{{ reg.idRede.idLocal.nmLocal }}{% endif %} |
- {{ reg.hardwares|length }} |
+ {{ reg.sgSo}} |
+ {%if reg.idRede is not null and reg.idLocal is not null %}{{ reg.nmLocal }}{% endif %} |
+ {{ reg.teClassPropertyValue }} |
{% else %}
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi.html.twig
new file mode 100755
index 0000000..09578d7
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi.html.twig
@@ -0,0 +1,40 @@
+{% extends 'CacicRelatorioBundle::base.html.twig' %}
+
+{% block body %}
+
+{{ 'Relatório de Configurações da Classe '|trans }} {{ classe }}
+ {{ 'Relatório gerado em'|trans }} {% if idioma == 'pt_BR' %}{{ "now"|date("d/m/Y H\\hi") }}{% else %}{{ "now"|date("m/d/Y H\\hi") }}{% endif %}
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi_detalhe.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi_detalhe.html.twig
new file mode 100755
index 0000000..6fa2921
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Resources/views/Hardware/rel_wmi_detalhe.html.twig
@@ -0,0 +1,47 @@
+{% extends 'CacicRelatorioBundle::base.html.twig' %}
+
+{% block body %}
+
+{{ 'Relatório de Configurações da Classe '|trans }} {{ classe }}
+ {{ 'Dados relativos à Propriedade '|trans }}{{ propriedade }}
+ {{ 'Relatório gerado em'|trans }} {% if idioma == 'pt_BR' %}{{ "now"|date("d/m/Y H\\hi") }}{% else %}{{ "now"|date("m/d/Y H\\hi") }}{% endif %}
+
+
+
+
+
+
+ {{ "Computador"|trans }} |
+ {{ "MAC Address"|trans }} |
+ {{ "Endereço IP"|trans }} |
+ {{ "Sistema Operacional"|trans }} |
+ {{ "Local"|trans }} |
+ {{ "Subrede"|trans }} |
+ {{ "Propriedade"|trans }} |
+ {{ "Valor"|trans }} |
+
+
+
+
+ {% for reg in dados %}
+
+
+ {{ reg.nmComputador }}
+ |
+ {{ reg.teNodeAddress }} |
+ {{ reg.teIpComputador }} |
+ {{ reg.sgSo }} |
+ {{ reg.nmLocal }} |
+ {{ reg.nmRede }} / {{ reg.teIpRede }} |
+ {{ reg.nmPropertyName }} |
+ {{ reg.teClassPropertyValue }} |
+
+ {% else %}
+
+ {{ "NENHUM REGISTRO ENCONTRADO!"|trans }} |
+
+ {% endfor %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Hardware/wmi_filtro.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Hardware/wmi_filtro.html.twig
new file mode 100755
index 0000000..fcbe8ab
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Resources/views/Hardware/wmi_filtro.html.twig
@@ -0,0 +1,116 @@
+{% extends '::base.html.twig' %}
+
+{% block breadcrumb %}
+ {{ "Relatório da Classe "|trans }} {{ classe }}
+{% endblock %}
+
+{% block stylesheets %}
+ {{ parent() }}
+
+{% endblock %}
+
+{% block javascripts %}
+ {{ parent() }}
+
+
+{% endblock %}
+
+{% block body %}
+
+
+
+
+
{{'Relatório de Configurações de Hardware' |trans }}
+
+
+
{{'Relatório da Classe '|trans }} {{ classe }}
+
+ {{ 'Este relatório exibe os dados das classes WMI coletadas nos computadores.'|trans }}
+ {{ 'É possível determinar quais propriedades serão exibidas no relatório, e restringir a pesquisa por sistemas operacionais e abrangência das redes.'|trans }}
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Software/inventariados_filtro.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Software/inventariados_filtro.html.twig
index 2096a0e..3d371aa 100644
--- a/src/Cacic/RelatorioBundle/Resources/views/Software/inventariados_filtro.html.twig
+++ b/src/Cacic/RelatorioBundle/Resources/views/Software/inventariados_filtro.html.twig
@@ -17,6 +17,7 @@
var tSW = $('#transferSW').bootstrapTransfer({'target_id':'tSw'});
var tLoc = $('#transferLocais').bootstrapTransfer({'target_id':'tLoc'});
var tSO = $('#transferSO').bootstrapTransfer({'target_id':'tSo'});
+ var tRede = $('#transferRede').bootstrapTransfer({'target_id':'tRede'});
tSW.populate([ // Popula o TRANSFER com Softwares
{% for sw in softwares %}
@@ -31,6 +32,13 @@
{% endfor %}
]);
+
+ tRede.populate([ // Popula o TRANSFER com Locais
+ {% for r in redes %}
+ {value: "{{ r[0]['idRede'] }}", content:"{{ r[0]['nmRede'] ~ '/' ~ r[0]['teIpRede'] }}"}{% if loop.last != true %},{% endif %}
+
+ {% endfor %}
+ ]);
tSO.populate([ // Popula o TRANSFER com Sistemas Operacionais
{% for _so in so %}
@@ -45,6 +53,7 @@
'elms' : [
{ 'transferElement' : tSW , 'inputHiddenName' : 'softwares' },
{ 'transferElement' : tLoc , 'inputHiddenName' : 'locais' },
+ { 'transferElement' : tRede , 'inputHiddenName' : 'redes' },
{ 'transferElement' : tSO , 'inputHiddenName' : 'so' }
]
};
@@ -80,6 +89,9 @@
{{ 'Selecione os Locais'|trans }}
+
+ {{ 'Selecione as Subredes'|trans }}
+
{{ 'Selecione os Sistemas Operacionais'|trans }}
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Software/listar.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Software/listar.html.twig
new file mode 100644
index 0000000..e74f67a
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Resources/views/Software/listar.html.twig
@@ -0,0 +1,51 @@
+{% extends 'CacicRelatorioBundle::base.html.twig' %}
+
+{% block body %}
+
+ {{ 'Relatório de Softwares Inventariados'|trans }}
+ {{ 'Relatório gerado em'|trans }} {% if idioma == 'pt_BR' %}{{ "now"|date("d/m/Y H\\hi") }}{% else %}{{ "now"|date("m/d/Y H\\hi") }}{% endif %}
+
+
+
+
+
+
+ {{ "Nome da Máquina"|trans }} |
+ {{ "Local"|trans }} |
+ {{ "IP"|trans }} |
+ {{ "Data último acesso"|trans }} |
+ |
+
+
+
+
+
+ {% for reg in dados %}
+
+
+
+
+ {{ reg['nmComputador'] }}
+
+ |
+ {{ reg['nmLocal'] }} |
+ {{ reg['teIpComputador'] }} |
+ {{ reg['dtHrUltAcesso']|date("d/m/Y H\\hi") }} |
+
+
+
+
+ |
+
+
+
+ {% else %}
+
+ {{ "NENHUM REGISTRO ENCONTRADO!"|trans }} |
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Software/rel_inventariados.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_inventariados.html.twig
index 1afa774..bfaaf37 100644
--- a/src/Cacic/RelatorioBundle/Resources/views/Software/rel_inventariados.html.twig
+++ b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_inventariados.html.twig
@@ -10,8 +10,9 @@
- {{ "Software"|trans }} |
- {{ "Local"|trans }} |
+ {{ "Software"|trans }} |
+ {{ "Local"|trans }} |
+ {{ "Subrede"|trans }} |
{{ "Máquinas"|trans }} |
@@ -21,9 +22,10 @@
{% for reg in dados %}
- {{ reg['nmSoftware'] }} |
+ {{ reg['nmSoftware'] }} |
{{ reg['nmLocal'] }} |
- {{ reg['numComp'] }} |
+ {{ reg['nmRede'] }} / {{ reg['teIpRede'] }} |
+ {{ reg['numComp'] }} |
{% else %}
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Software/rel_software_lista.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_software_lista.html.twig
new file mode 100755
index 0000000..e41f9e4
--- /dev/null
+++ b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_software_lista.html.twig
@@ -0,0 +1,44 @@
+{% extends 'CacicRelatorioBundle::base.html.twig' %}
+
+{% block body %}
+
+{{ 'Relatório de estações para o Software '|trans }} {{ software }}
+ {{ 'Relatório gerado em'|trans }} {% if idioma == 'pt_BR' %}{{ "now"|date("d/m/Y H\\hi") }}{% else %}{{ "now"|date("m/d/Y H\\hi") }}{% endif %}
+
+
+
+
+
+
+ {{ "Computador"|trans }} |
+ {{ "MAC Address"|trans }} |
+ {{ "Endereço IP"|trans }} |
+ {{ "Sistema Operacional"|trans }} |
+ {{ "Local"|trans }} |
+ {{ "Subrede"|trans }} |
+ {{ "Data/Hora da Última coleta"|trans }} |
+
+
+
+
+ {% for reg in dados %}
+
+
+ {{ reg.nmComputador }}
+ |
+ {{ reg.teNodeAddress }} |
+ {{ reg.teIpComputador }} |
+ {{ reg.sgSo }} |
+ {{ reg.nmLocal }} |
+ {{ reg.nmRede }} / {{ reg.teIpRede }} |
+ {{ reg.dtHrInclusao|date }} |
+
+ {% else %}
+
+ {{ "NENHUM REGISTRO ENCONTRADO!"|trans }} |
+
+ {% endfor %}
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/src/Cacic/RelatorioBundle/Resources/views/Software/rel_tipo.html.twig b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_tipo.html.twig
index 57ae4c4..fee038b 100644
--- a/src/Cacic/RelatorioBundle/Resources/views/Software/rel_tipo.html.twig
+++ b/src/Cacic/RelatorioBundle/Resources/views/Software/rel_tipo.html.twig
@@ -10,8 +10,8 @@
+ {{ 'Tipo'|trans }} |
{{ "Software"|trans }} |
- {{ 'Tipo'|trans }} |
{{ "Máquinas"|trans }} |
@@ -19,30 +19,9 @@
{% for reg in dados %}
+ {{ reg.teDescricaoTipoSoftware }} |
{{ reg.nmSoftware }} |
- {{ reg.idTipoSoftware }} |
- {{ reg.estacoes|length }} |
-
-
-
-
-
-
- {{ 'Nome da máquina'|trans }} |
- {{ 'IP'|trans }} |
- {{ 'Última Coleta'|trans }} |
-
- {% for item in reg.estacoes %}
-
- {{ item.idComputador.nmComputador }} |
- {{ item.idComputador.teIpComputador }} |
- {{ item.idComputador.dtHrUltAcesso|date('d/m/Y H:i') }} |
-
- {% endfor %}
-
-
-
- |
+ {{ reg.numComp }} |
{% else %}
diff --git a/src/Cacic/WSBundle/Controller/ColetaController.php b/src/Cacic/WSBundle/Controller/ColetaController.php
index 85c548a..ee31f13 100644
--- a/src/Cacic/WSBundle/Controller/ColetaController.php
+++ b/src/Cacic/WSBundle/Controller/ColetaController.php
@@ -43,15 +43,16 @@ class ColetaController extends Controller
public function gerColsSetColletAction( Request $request )
{
OldCacicHelper::autenticaAgente( $request ) ;
- $rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta( $request );
+ $logger = $this->get('logger');
+ //$rede = $this->getDoctrine()->getRepository('CacicCommonBundle:Rede')->getDadosRedePreColeta( $request );
$strNetworkAdapterConfiguration = OldCacicHelper::deCrypt( $request, $request->get('NetworkAdapterConfiguration') );
- $strComputerSystem = OldCacicHelper::deCrypt( $request, $request->get('ComputerSystem') );
- $strOperatingSystem = OldCacicHelper::deCrypt( $request, $request->request->get('OperatingSystem') );
+ //$strComputerSystem = OldCacicHelper::deCrypt( $request, $request->get('ComputerSystem') );
+ //$strOperatingSystem = OldCacicHelper::deCrypt( $request, $request->request->get('OperatingSystem') );
$data = new \DateTime('NOW');
$te_node_adress = TagValueHelper::getValueFromTags( 'MACAddress', $strNetworkAdapterConfiguration );
$te_so = $request->get( 'te_so' );
- $ultimo_login = TagValueHelper::getValueFromTags( 'UserName' , $strComputerSystem);
+ //$ultimo_login = TagValueHelper::getValueFromTags( 'UserName' , $strComputerSystem);
$grava_teste = '';
//vefifica se existe SO coletado se não, insere novo SO
@@ -63,51 +64,27 @@ class ColetaController extends Controller
// Defino os dois arrays que conterão as configurações para Coletas, Classes e Propriedades
$arrClassesNames = array();
- $arrCollectsDefClasses = array();
+ $arrCollectsDefClasses[$strCollectType] = array();
$detalhesClasses = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->listaDetalhesClasseAcoes($strCollectType);
- // Variável para corrigir o erro do Doctrine
- $className = '';
-
foreach ($detalhesClasses as $detalhe)
{
// Adiciona classe no Array de classes que estão no banco
- if ($detalhe['nmClassName']) {
+ if (!in_array($detalhe['nmClassName'], $arrClassesNames)) {
array_push($arrClassesNames, $detalhe['nmClassName']);
}
-
- //$arrCollectsDefClasses[$strCollectType] = $detalhesClasse[$strCollectType] == '' ? $detalhesClasse['nmClassName'] : $arrCollectsDefClasses[$strCollectType];
- //$teste1 = $detalhe['nmPropertyName'];
- //$teste2 = $detalhe['idClassProperty'];
- //$teste3 = $detalhe['nmClassName'];
-
- // Tem que corrigir o erro do Doctrine que não traz o nome da classe para todos os resultados
- if (!empty($detalhe['nmClassName'])) {
- // Vou inserir na variável o valor da classe quando ela não for vazia
- $className = $detalhe['nmClassName'];
- }
-
- //error_log("444444444444444444444444444444444444444444444444444444 $teste3 | $teste1 | $teste2 | $className");
-
// Primeiro cria array com as informações das propriedades
$property = array(
'idClassProperty' => $detalhe['idClassProperty'],
'nmFunctionPreDb' => $detalhe['nmFunctionPreDb']
);
- // Adiciona as classes no Array geral
- if ($arrCollectsDefClasses[$strCollectType][$className]) {
- // Aqui o array já existe. Só substituo pelo novo valor
- $arrCollectsDefClasses[$strCollectType][$className][$detalhe['nmPropertyName']] = $property;
- } else if ($className) {
- // Aqui adiciona a classe no array
- $arrCollectsDefClasses[$strCollectType][$className] = array();
-
- // Adiciona as propriedades no array de classes
- $arrCollectsDefClasses[$strCollectType][$className][$detalhe['nmPropertyName']] = $property;
- }
+ $nmPropertyName = $detalhe['nmPropertyName'];
+ $logger->debug("Adicionando propriedade $nmPropertyName no array de propriedades");
+ // Aqui o array já existe. Só substituo pelo novo valor
+ $arrCollectsDefClasses[$strCollectType][$detalhe['nmClassName']][$detalhe['nmPropertyName']] = $property;
}
//$teste = print_r($arrCollectsDefClasses, true);
@@ -134,9 +111,8 @@ class ColetaController extends Controller
foreach( $request->request->all() as $strClassName => $strClassValues)
{
//$teste = OldCacicHelper::deCrypt($request, $strClassValues);
- //error_log("444444444444444444444444444444444444444444444444444444444: $strClassName | \n $teste");
+ //$logger->debug("444444444444444444444444444444444444444444444444444444444: $strClassName | \n $teste");
//error_log("444444444444444444444444444444444444444444444444444444: $strClassName");
- // Aqui executo uma linha para cada atributo definido na coleta
// Verifico se o atributo sendo verificado é uma classe de coleta.
@@ -145,13 +121,8 @@ class ColetaController extends Controller
// Descriptografando os valores da requisição
$strNewClassValues = OldCacicHelper::deCrypt($request, $strClassValues);
- //error_log("55555555555555555555555555555555555555555555: Entrei | $strClassName");
- //error_log("77777777777777777777777777777777777777777777777: Entrei | $strNewClassValues");
-
// A propriedade da coleta de software é multi valorada. Preciso tratar diferente
if ($strClassName == "SoftwareList") {
- //error_log("77777777777777777777777777777777777777777777777: Entrei | $strNewClassValues");
- //error_log("77777777777777777777777777777777777777777777777: Entrei");
// Primeiro preciso pegar todas as tags qure forem software
$arrSoftware = TagValueHelper::getSoftwareTags($strNewClassValues);
@@ -161,11 +132,8 @@ class ColetaController extends Controller
// Armazeno todas as propriedades dessa classe enviadas pela requisição
$arrTags = TagValueHelper::getTagsFromValues($software);
- //error_log("6666666666666666666666666666666666666666666666: Encontrei a classe no array $software");
-
// Crio um array multidimensional com as tags e os valores
foreach ($arrTags as $tagNames) {
- //error_log("55555555555555555555555555555555555555555555555: $tagNames");
// Essa função garante que só serão retornados caracteres com UTF8 Válido
$texto = TagValueHelper::UTF8Sanitize(TagValueHelper::getValueFromTags($tagNames, $software));
$arrTagsNames[$tagNames] = $texto;
@@ -199,39 +167,49 @@ class ColetaController extends Controller
// Retorna o novo ID
$idClassProperty = $property->getIdClassProperty();
}
- //error_log("888888888888888888888888888888888888888888888: $strClassName | $idClassProperty");
// Chama função que grava a propriedade
$this->gerColsSetProperty('IDSoftware', $software, $idClassProperty, $computador);
+ // Adiciona referência à tabela de softwares
+ $softwareObject = $this->getDoctrine()->getRepository('CacicCommonBundle:Software')->findOneBy( array('nmSoftware' => $softwareName) );
+
+ // Se for fazio, crio o objeto software
+ if (empty($softwareObject)) {
+ $softwareObject = new Software();
+ }
+
+ // Se não tiver nome coloco o ID Software no nome
+ if (empty($arrTagsNames['DisplayName'])) {
+ $softwareObject->setNmSoftware($softwareName);
+ } else {
+ $softwareObject->setNmSoftware($arrTagsNames['DisplayName']);
+ }
+
+ // Grava software recém inserido
+ $this->getDoctrine()->getManager()->persist($softwareObject);
+ $this->getDoctrine()->getManager()->flush();
+
// Agora gravo todas as propriedades para o software na tabela propriedade_software
$classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) );
- $propriedadeSoftware = $this->getDoctrine()->getRepository('CacicCommonBundle:PropriedadeSoftware')->findOneBy( array('classProperty'=> $idClassProperty, 'computador' => $computador) );
+ $propriedadeSoftware = $this->getDoctrine()->getRepository('CacicCommonBundle:PropriedadeSoftware')->findOneBy( array('classProperty'=> $idClassProperty, 'computador' => $computador, 'software' => $softwareObject->getIdSoftware()) );
if (empty($propriedadeSoftware)) {
$propriedadeSoftware = new PropriedadeSoftware();
$propriedadeSoftware->setClassProperty($classPropertyObject);
$propriedadeSoftware->setComputador($computador);
-
- // Adiciona referência à tabela de softwares
- $softwareObject = new Software();
- // Se for fazio coloco o ID Software no nome
- if (empty($arrTagsNames['DisplayName'])) {
- $softwareObject->setNmSoftware($softwareName);
- } else {
- $softwareObject->setNmSoftware($arrTagsNames['DisplayName']);
- }
+ $propriedadeSoftware->setSoftware($softwareObject);
// Grava no banco de dados
$this->getDoctrine()->getManager()->persist($propriedadeSoftware);
- $this->getDoctrine()->getManager()->persist($softwareObject);
$this->getDoctrine()->getManager()->flush();
} else {
// Ajusta valores coletados
$propriedadeSoftware->setDisplayName($arrTagsNames['DisplayName']);
$propriedadeSoftware->setDisplayVersion($arrTagsNames['DisplayVersion']);
$propriedadeSoftware->setURLInfoAbout($arrTagsNames['URLInfoAbout']);
+ $propriedadeSoftware->setSoftware($softwareObject);
// Salva valor da coleta
$this->getDoctrine()->getManager()->persist($propriedadeSoftware);
@@ -240,24 +218,24 @@ class ColetaController extends Controller
}
- } else {
+ } elseif (!empty($strNewClassValues)) {
// Armazeno todas as propriedades dessa classe enviadas pela requisição
$arrTagsNames = TagValueHelper::getTagsFromValues($strNewClassValues);
- //error_log("6666666666666666666666666666666666666666666666: Encontrei a classe no array $strNewClassValues");
-
// Agora gravo todas as propriedades dessa classe na tabela de computadores
foreach ($arrTagsNames as $classPropertyName) {
- //error_log("9999999999999999999999999999999999999999999999999999: $classPropertyName");
-
- // Pego o Id da classe cadastrada no Banco de Dados para gravar
- $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$classPropertyName]['idClassProperty'];
+ $logger->debug("Processando a proriedade WMI $classPropertyName para a classe $strClassName");
+ // Pega classe
+ $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) );
// Caso a propriedade ainda não esteja cadastrada no banco, crio na hora
- if (empty($idClassProperty)) {
- error_log("Criando propriedade $classPropertyName para a classe $strClassName");
- // Pega classe
- $idClass = $this->getDoctrine()->getRepository('CacicCommonBundle:Classe')->findOneBy( array('nmClassName'=>$strClassName) );
+ if (array_key_exists($classPropertyName, $arrCollectsDefClasses[$strCollectType][$strClassName])) {
+ // Somente armazeno o valor que já existe
+ $idClassProperty = $arrCollectsDefClasses[$strCollectType][$strClassName][$classPropertyName]['idClassProperty'];
+ $logger->debug("Propriedade encontrada: $classPropertyName id_class_property = $idClassProperty. Apenas atualizar");
+ } else {
+ // Se não existir cria a propriedade
+ $logger->info("Criando propriedade $classPropertyName para a classe $strClassName");
$classPropertyObject = new ClassProperty();
$classPropertyObject->setIdClass($idClass);
@@ -269,7 +247,11 @@ class ColetaController extends Controller
// Finalmente adiciono no array de classes e propriedades
$idClassProperty = $classPropertyObject->getIdClassProperty();
- $arrCollectsDefClasses[$strCollectType][$className][$classPropertyName] = $idClassProperty;
+ $property = array(
+ 'idClassProperty' => $idClassProperty,
+ 'nmFunctionPreDb' => null
+ );
+ $arrCollectsDefClasses[$strCollectType][$className][$classPropertyName] = $property;
}
//error_log("888888888888888888888888888888888888888888888: $strClassName | $idClassProperty | $classPropertyName");
@@ -355,19 +337,21 @@ class ColetaController extends Controller
public function gerColsSetProperty($classPropertyName, $strNewClassValues, $idClassProperty, $computador)
{
+ $logger = $this->get('logger');
+ $grava_teste = "";
// pego o valor da classe presente na requisição
$classProperty = TagValueHelper::getValueFromTags($classPropertyName, $strNewClassValues);
// Se não encontrar o valor, loga o erro e sai
- if (empty($classProperty)) {
- error_log("ERRO NA COLETA! Propriedade $classPropertyName não encontrada na requisição");
+ if (is_null($classProperty) || $classProperty == "") {
+ $logger->error("ERRO NA COLETA! Propriedade $classPropertyName não encontrada na requisição ou valor vazio");
return;
}
//error_log("888888888888888888888888888888888888888888888: $strNewClassValues | $idClassProperty | $classPropertyName | $classProperty");
// Preparo o objeto da coleta para gravação
- $computadorColeta = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->findOneBy( array( 'computador'=> $computador, 'classProperty'=>$$idClassProperty ) );
+ $computadorColeta = $this->getDoctrine()->getRepository('CacicCommonBundle:ComputadorColeta')->findOneBy( array( 'computador'=> $computador, 'classProperty'=> $idClassProperty ) );
if (empty($computadorColeta)) {
// Se não existir nenhuma ocorrência para esse atributo, apenas adiciono
//error_log("3333333333333333333333333333333333333333333: Criando objeto");
@@ -378,8 +362,8 @@ class ColetaController extends Controller
// Pega o objeto para gravar
$classPropertyObject = $this->getDoctrine()->getRepository('CacicCommonBundle:ClassProperty')->findOneBy( array( 'idClassProperty'=> $idClassProperty ) );
- if (!$classPropertyObject) {
- error_log("FALHA! Propriedade não encontrada: $idClassProperty");
+ if (empty($classPropertyObject)) {
+ $logger->error("FALHA! Propriedade não encontrada: $idClassProperty");
}
// Armazena no banco o objeto
diff --git a/src/Cacic/WSBundle/Helper/OldCacicHelper.php b/src/Cacic/WSBundle/Helper/OldCacicHelper.php
index 360ed1f..bade1cd 100644
--- a/src/Cacic/WSBundle/Helper/OldCacicHelper.php
+++ b/src/Cacic/WSBundle/Helper/OldCacicHelper.php
@@ -23,7 +23,10 @@ class OldCacicHelper
}
public function getRootDir() {
- return $this->rootDir;
+ // Tenta consertar caminho do diretório
+ $rootDir = realpath($this->rootDir);
+
+ return $rootDir;
}
/*
@@ -31,7 +34,7 @@ class OldCacicHelper
*/
public function iniFile() {
- return $this->getRootDir() . OldCacicHelper::CACIC_PATH_RELATIVO_DOWNLOADS . 'versions_and_hashes.ini';
+ return OldCacicHelper::getRootDir() . OldCacicHelper::CACIC_PATH_RELATIVO_DOWNLOADS . 'versions_and_hashes.ini';
}
// define o nome do agente principal do CACIC
diff --git a/src/Cacic/WSBundle/Helper/TagValueHelper.php b/src/Cacic/WSBundle/Helper/TagValueHelper.php
index 0ec1304..8eb51b5 100644
--- a/src/Cacic/WSBundle/Helper/TagValueHelper.php
+++ b/src/Cacic/WSBundle/Helper/TagValueHelper.php
@@ -37,7 +37,7 @@ class TagValueHelper
// Garantir que o resultado contenha somente UTF-8 valido
$resultado = TagValueHelper::UTF8Sanitize($arrResult[1][0]);
- return empty($resultado) ? null : $resultado;
+ return $resultado;
}
// Metódo para recuperar array com nomes das tags delimitadas por "<" e ">"
@@ -99,7 +99,7 @@ class TagValueHelper
*/
public static function UTF8Sanitize($text) {
- return iconv('UTF-8', 'UTF-8//IGNORE', $text);
+ return iconv('WINDOWS-1252', 'UTF-8//TRANSLIT', $text);
}
/*
@@ -107,21 +107,25 @@ class TagValueHelper
*/
public static function getTableValues($source) {
- preg_match_all("/\[\[REG\]\](.*?)\[\[REG\]\]/",$source,$arrResult);
+ preg_match_all("/(.*)\[\[REG\]\](.*)/", $source, $arrResult);
// Se não houver match, retorna a fonte
- if (empty($arrResult[1])) {
+ if (empty($arrResult[0])) {
return $source;
}
//Caso contrário retorna os elementos prontos para serem inseridos em uma tabela
$saida = '';
- $i = 1;
- foreach ($arrResult[1] as $linha) {
- $saida = $saida . '
';
- $saida = $saida . "#$i | ";
- $saida = $saida . "$linha | ";
- $saida = $saida . '
';
+ $i = 0;
+ foreach ($arrResult as $linha) {
+ if ($i != 0) {
+ // Ignora a primeira linha
+ //continue;
+ $saida = $saida . '';
+ $saida = $saida . "#$i | ";
+ $saida = $saida . "$linha[0] | ";
+ $saida = $saida . '
';
+ }
$i = $i + 1;
}
--
libgit2 0.21.2