SoftwareRepository.php
10.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
<?php
namespace Cacic\CommonBundle\Entity;
use Doctrine\ORM\EntityRepository;
/**
*
* Repositório de métodos de consulta em DQL
* @author lightbase
*
*/
class SoftwareRepository extends EntityRepository
{
public function paginar( \Knp\Component\Pager\Paginator $paginator, $page = 1 )
{
$_dql = "SELECT s, tipoSW.teDescricaoTipoSoftware AS tipoSoftware
FROM CacicCommonBundle:Software s
LEFT JOIN s.idTipoSoftware tipoSW
ORDER BY s.nmSoftware ASC";
return $paginator->paginate(
$this->getEntityManager()->createQuery( $_dql ),
$page,
10
);
}
/**
*
* Método de listagem dos Software cadastrados e respectivas informações
*/
public function listar()
{
$_dql = "SELECT s, tipoSW.teDescricaoTipoSoftware AS tipoSoftware
FROM CacicCommonBundle:Software s
LEFT JOIN s.idTipoSoftware tipoSW
ORDER BY s.nmSoftware ASC";
return $this->getEntityManager()->createQuery( $_dql )->getArrayResult();
}
public function listarSoftware()
{
$qb = $this->createQueryBuilder('sw')
->select('sw.nmSoftware','class.idClassProperty')
->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'sw.idSoftware = prop.software')
->innerJoin('CacicCommonBundle:ClassProperty', 'class','WITH', 'prop.classProperty = class.idClassProperty')
->groupBy('sw.nmSoftware,class.idClassProperty, class.nmPropertyName')
->orderBy(' sw.nmSoftware');
return $qb->getQuery()->execute();
}
/**
*
* Método de listagem dos Softwares cadastrados que não foram classificados (sem Tipo de Software)
*/
public function listarNaoClassificados( \Knp\Component\Pager\Paginator $paginator, $page = 1)
{
$qb = $this->createQueryBuilder('sw')
->select('sw.nmSoftware','sw.idSoftware')
->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'sw.idSoftware = prop.software')
->innerJoin('CacicCommonBundle:ClassProperty', 'class','WITH', 'prop.classProperty = class.idClassProperty')
->where('sw.idTipoSoftware is null')
->groupBy('sw.nmSoftware,sw.idSoftware')
->orderBy('sw.nmSoftware');
return $paginator->paginate(
$qb->getQuery()->execute(),
$page,
10
);
}
/**
*
* Método de listagem dos Softwares cadastrados que não estão associados a nenhuma máquina
*/
public function listarNaoUsados()
{
$_dql = "SELECT s
FROM CacicCommonBundle:Software s
LEFT JOIN s.estacoes se
WHERE se IS NULL
ORDER BY s.nmSoftware ASC";
return $this->getEntityManager()->createQuery( $_dql )->getArrayResult();
}
/**
*
* Método de consulta à base de dados de softwares inventariados
* @param array $filtros
*/
public function gerarRelatorioSoftwaresInventariados( $filtros )
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw')
->select('COALESCE(sw.nmSoftware) as nmSoftware', 'l.nmLocal','COUNT(DISTINCT col.computador) AS numComp')
->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'sw.idSoftware = prop.software')
->innerJoin('CacicCommonBundle:ClassProperty', 'class','WITH', 'prop.classProperty = class.idClassProperty')
->innerJoin('CacicCommonBundle:ComputadorColeta', 'col', 'WITH', 'col.computador = prop.computador')
->innerJoin('CacicCommonBundle:Computador', 'comp', 'WITH', 'col.computador = comp.idComputador')
->innerJoin('comp.idRede','r')
->leftJoin('r.idLocal', 'l')
->groupBy('sw.nmSoftware, l.nmLocal')
->orderBy('sw.nmSoftware, l.nmLocal');
/**
* Verifica os filtros que foram parametrizados
*/
if ( array_key_exists('softwares', $filtros) && !empty($filtros['softwares']) )
$qb->andWhere('class.idClassProperty IN (:softwares)')->setParameter('softwares', explode( ',', $filtros['softwares'] ));
if ( array_key_exists('locais', $filtros) && !empty($filtros['locais']) )
$qb->andWhere('l.idLocal IN (:locais)')->setParameter('locais', explode( ',', $filtros['locais'] ));
if ( array_key_exists('redes', $filtros) && !empty($filtros['redes']) )
$qb->andWhere('r.idRede IN (:redes)')->setParameter('redes', explode( ',', $filtros['redes'] ));
if ( array_key_exists('so', $filtros) && !empty($filtros['so']) )
$qb->andWhere('comp.idSo IN (:so)')->setParameter('so', explode( ',', $filtros['so'] ));
return $qb->getQuery()->execute();
}
/**
*
* Método de consulta à base de dados de softwares licenciados
* @param array $filtros
*/
public function gerarRelatorioSoftwaresLicenciados( $filtros )
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw')
->select('sw.nmSoftware', 'aqit.qtLicenca', 'aqit.dtVencimentoLicenca', 'aq.nrProcesso', 'tpl.teTipoLicenca')
->innerJoin('CacicCommonBundle:AquisicaoItem','aqit','WITH','sw.idSoftware = aqit.idSoftware')
->innerJoin('CacicCommonBundle:Aquisicao','aq','WITH','aq.idAquisicao = aqit.idAquisicao')
->innerJoin('CacicCommonBundle:TipoLicenca','tpl','WITH','tpl.idTipoLicenca = aqit.idTipoLicenca')
->orderBy('sw.nmSoftware');
/**
* Verifica os filtros que foram parametrizados
*/
if ( array_key_exists('softwares', $filtros) && !empty($filtros['softwares']) )
$qb->andWhere('sw.idSoftware IN (:softwares)')->setParameter('softwares', explode( ',', $filtros['softwares'] ));
return $qb->getQuery()->execute();
}
/**
*
* Método de consulta à base de dados de softwares por órgão
* @param array $filtros
*/
public function gerarRelatorioSoftwaresPorOrgao( $filtros )
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw')
->select('sw', 'se', 'comp')
->innerJoin('sw.estacoes', 'se')
->innerJoin('se.idComputador', 'comp')
->orderBy('sw.nmSoftware')->addOrderBy('comp.nmComputador')->addOrderBy('comp.teIpComputador');
/**
* Verifica os filtros que foram parametrizados
*/
if ( array_key_exists('TipoSoftware', $filtros) && !empty($filtros['TipoSoftware']) )
$qb->innerJoin('sw.idTipoSoftware', 'tpsw')->andWhere('tpsw.idTipoSoftware IN (:tpsw)')->setParameter('tpsw', explode( ',', $filtros['TipoSoftware'] ));
if ( array_key_exists('nmComputador', $filtros) && !empty($filtros['nmComputador']) )
$qb->andWhere('comp.nmComputador LIKE :nmComputador')->setParameter('nmComputador', "%{$filtros['nmComputador']}%" );
return $qb->getQuery()->execute();
}
/**
*
* Método de consulta à base de dados de softwares por tipo
* @param array $filtros
*/
public function gerarRelatorioSoftwaresPorTipo( $filtros )
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw')
->select('COALESCE( sw.nmSoftware) as nmSoftware', 'tipo.teDescricaoTipoSoftware', 'COUNT(DISTINCT col.computador) AS numComp')
->innerJoin('CacicCommonBundle:PropriedadeSoftware', 'prop', 'WITH', 'sw.idSoftware = prop.software')
->innerJoin('CacicCommonBundle:ComputadorColeta', 'col', 'WITH', 'col.computador = prop.computador')
->innerJoin('CacicCommonBundle:Computador', 'comp', 'WITH', 'col.computador = comp.idComputador')
->innerJoin('CacicCommonBundle:TipoSoftware', 'tipo', 'WITH', 'sw.idTipoSoftware = tipo.idTipoSoftware')
->groupBy('tipo.teDescricaoTipoSoftware, sw.nmSoftware, tipo.idTipoSoftware');
/**
* Verifica os filtros que foram parametrizados
*/
if ( array_key_exists('TipoSoftware', $filtros) && !empty($filtros['TipoSoftware']) )
$qb->andWhere('tipo.idTipoSoftware IN (:tpsw)')->setParameter('tpsw', explode( ',', $filtros['TipoSoftware'] ));
return $qb->getQuery()->execute();
}
/**
*
* Método de consulta à base de dados de softwares não vinculados a nenhuma estação
* @param array $filtros
*/
public function gerarRelatorioSoftwaresNaoVinculados()
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw');
$qb->select('sw', 'tpsw', 'se')
->leftJoin('sw.idTipoSoftware', 'tpsw')
->leftJoin('sw.estacoes', 'se')
->groupBy('sw', 'tpsw.idTipoSoftware', 'tpsw.teDescricaoTipoSoftware', 'se')
->having($qb->expr()->eq($qb->expr()->count('se'), 0))
->orderBy('sw.nmSoftware');
return $qb->getQuery()->execute();
}
public function gerarRelatorioPatrimonio( $filtros )
{
// Monta a Consulta básica...
$qb = $this->createQueryBuilder('sw')
->select( 'comp.nmComputador', 'sw.nmSoftware', 'so.sgSo', 'r.teIpRede', 'l.nmLocal', 'pci.teEtiqueta', 'pci.idEtiqueta','comp.idComputador','so.inMswindows')
->innerJoin('CacicCommonBundle:SoftwareEstacao', 'se','WITH','sw.idSoftware = se.idSoftware')
->innerJoin('CacicCommonBundle:Computador', 'comp','WITH','se.idComputador = comp.idComputador')
->leftJoin('CacicCommonBundle:So', 'so','WITH','comp.idSo = so.idSo')
->leftJoin('CacicCommonBundle:Rede', 'r','WITH', 'comp.idRede = r.idRede')
->innerJoin('CacicCommonBundle:Local','l','WITH', 'r.idLocal = l.idLocal')
->innerJoin('CacicCommonBundle:PatrimonioConfigInterface','pci','WITH','l.idLocal = pci.local')
->groupBy('comp.nmComputador, sw.nmSoftware, so.sgSo, r.teIpRede, l.nmLocal, pci.teEtiqueta, pci.idEtiqueta,comp.idComputador,so.inMswindows')
->orderBy('sw.nmSoftware, l.nmLocal, pci.idEtiqueta');
/*
* Verifica os filtros que foram parametrizados
*/
if ( array_key_exists('softwares', $filtros) && !empty($filtros['softwares']) )
$qb->andWhere('sw.idSoftware IN (:softwares)')->setParameter('softwares', explode( ',', $filtros['softwares'] ));
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('pci', $filtros) && !empty($filtros['pci']) )
$qb->andWhere('pci.idEtiqueta IN (:pci)')->setParameter('pci', explode( ',', $filtros['pci'] ));
return $qb->getQuery()->execute();
}
}