Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 65 |
|
0.00% |
0 / 7 |
CRAP | |
0.00% |
0 / 1 |
ModeleAnalyse | |
0.00% |
0 / 65 |
|
0.00% |
0 / 7 |
306 | |
0.00% |
0 / 1 |
getModelClass | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
count | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
findPaginated | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
2 | |||
addTableOrder | |
0.00% |
0 / 12 |
|
0.00% |
0 / 1 |
30 | |||
addTableSearches | |
0.00% |
0 / 21 |
|
0.00% |
0 / 1 |
56 | |||
findAllByCollectivity | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
findOneById | |
0.00% |
0 / 14 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace App\Infrastructure\ORM\AIPD\Repository; |
6 | |
7 | use App\Application\Doctrine\Repository\CRUDRepository; |
8 | use App\Application\Traits\RepositoryUtils; |
9 | use App\Domain\AIPD\Model; |
10 | use App\Domain\AIPD\Repository; |
11 | use App\Domain\User\Repository\Collectivity; |
12 | use Doctrine\ORM\QueryBuilder; |
13 | use Doctrine\ORM\Tools\Pagination\Paginator; |
14 | |
15 | class ModeleAnalyse extends CRUDRepository implements Repository\ModeleAnalyse |
16 | { |
17 | use RepositoryUtils; |
18 | |
19 | protected function getModelClass(): string |
20 | { |
21 | return Model\ModeleAnalyse::class; |
22 | } |
23 | |
24 | public function count(array $criteria = []) |
25 | { |
26 | $qb = $this->createQueryBuilder(); |
27 | |
28 | $qb->select('COUNT(o.id)'); |
29 | |
30 | return $qb->getQuery()->getSingleScalarResult(); |
31 | } |
32 | |
33 | public function findPaginated($firstResult, $maxResults, $orderColumn, $orderDir, $searches, $criteria = []) |
34 | { |
35 | $qb = $this->createQueryBuilder() |
36 | ->addSelect('c') |
37 | ->leftJoin('o.authorizedCollectivities', 'c'); |
38 | |
39 | $this->addTableSearches($qb, $searches); |
40 | $this->addTableOrder($qb, $orderColumn, $orderDir); |
41 | |
42 | $qb = $qb->getQuery(); |
43 | $qb->setFirstResult($firstResult); |
44 | $qb->setMaxResults($maxResults); |
45 | |
46 | return new Paginator($qb); |
47 | } |
48 | |
49 | private function addTableOrder(QueryBuilder $queryBuilder, $orderColumn, $orderDir) |
50 | { |
51 | switch ($orderColumn) { |
52 | case 'nom': |
53 | $queryBuilder->addOrderBy('o.nom', $orderDir); |
54 | break; |
55 | case 'description': |
56 | $queryBuilder->addOrderBy('o.description', $orderDir); |
57 | break; |
58 | case 'updatedAt': |
59 | $queryBuilder->addOrderBy('o.updatedAt', $orderDir); |
60 | break; |
61 | case 'createdAt': |
62 | $queryBuilder->addOrderBy('o.createdAt', $orderDir); |
63 | break; |
64 | } |
65 | } |
66 | |
67 | private function addTableSearches(QueryBuilder $queryBuilder, $searches) |
68 | { |
69 | foreach ($searches as $columnName => $search) { |
70 | switch ($columnName) { |
71 | case 'nom': |
72 | $this->addWhereClause($queryBuilder, 'nom', '%' . $search . '%', 'LIKE'); |
73 | break; |
74 | case 'description': |
75 | $this->addWhereClause($queryBuilder, 'description', '%' . $search . '%', 'LIKE'); |
76 | break; |
77 | case 'createdAt': |
78 | $queryBuilder->andWhere('o.createdAt BETWEEN :created_start_date AND :created_finish_date') |
79 | ->setParameter('created_start_date', date_create_from_format('d/m/y', substr($search, 0, 8))->format('Y-m-d 00:00:00')) |
80 | ->setParameter('created_finish_date', date_create_from_format('d/m/y', substr($search, 11, 8))->format('Y-m-d 23:59:59')); |
81 | break; |
82 | case 'updatedAt': |
83 | $queryBuilder->andWhere('o.updatedAt BETWEEN :updated_start_date AND :updated_finish_date') |
84 | ->setParameter('updated_start_date', date_create_from_format('d/m/y', substr($search, 0, 8))->format('Y-m-d 00:00:00')) |
85 | ->setParameter('updated_finish_date', date_create_from_format('d/m/y', substr($search, 11, 8))->format('Y-m-d 23:59:59')); |
86 | break; |
87 | case 'createdAt': |
88 | $queryBuilder->andWhere('o.createdAt LIKE :date') |
89 | ->setParameter('date', date_create_from_format('d/m/Y', $search)->format('Y-m-d') . '%'); |
90 | break; |
91 | } |
92 | } |
93 | } |
94 | |
95 | public function findAllByCollectivity(Collectivity $collectivity) |
96 | { |
97 | $qb = $this->createQueryBuilder(); |
98 | // TODO Gestion des droits |
99 | |
100 | $qb = $qb->getQuery(); |
101 | $qb->setFirstResult(0); |
102 | $qb->setMaxResults(100); |
103 | |
104 | return new Paginator($qb); |
105 | } |
106 | |
107 | public function findOneById(string $id) |
108 | { |
109 | return $this->createQueryBuilder() |
110 | ->leftJoin('o.scenarioMenaces', 's') |
111 | ->addSelect('s') |
112 | ->leftJoin('s.mesuresProtections', 'm') |
113 | ->addSelect('m') |
114 | ->leftJoin('o.criterePrincipeFondamentaux', 'c') |
115 | ->addSelect('c') |
116 | ->leftJoin('o.questionConformites', 'q') |
117 | ->addSelect('q') |
118 | ->andWhere('o.id = :id') |
119 | ->setParameter('id', $id) |
120 | ->getQuery() |
121 | ->getOneOrNullResult() |
122 | ; |
123 | } |
124 | } |