@@ -44,8 +44,8 @@ public function getCartoReal($anrId)
44
44
$ this ->buildListScalesAndHeaders ($ anrId );
45
45
$ this ->buildListScalesOpRisk ($ anrId );
46
46
47
- list ($ counters , $ distrib ) = $ this ->getCountersRisks ('raw ' );
48
- list ($ countersRiskOP , $ distribRiskOp ) = $ this ->getCountersOpRisks ('raw ' );
47
+ list ($ counters , $ distrib, $ riskMaxSum , $ byTreatment ) = $ this ->getCountersRisks ('raw ' );
48
+ list ($ countersRiskOP , $ distribRiskOp, $ riskOpMaxSum , $ byTreatmentRiskOp ) = $ this ->getCountersOpRisks ('raw ' );
49
49
50
50
return [
51
51
'Impact ' => $ this ->listScales [Scale::TYPE_IMPACT ],
@@ -56,10 +56,14 @@ public function getCartoReal($anrId)
56
56
'riskInfo ' => [
57
57
'counters ' => $ counters ,
58
58
'distrib ' => $ distrib ,
59
+ 'riskMaxSum ' => $ riskMaxSum ,
60
+ 'byTreatment ' => $ byTreatment ,
59
61
],
60
62
'riskOp ' => [
61
63
'counters ' => $ countersRiskOP ,
62
64
'distrib ' => $ distribRiskOp ,
65
+ 'riskOpMaxSum ' => $ riskOpMaxSum ,
66
+ 'byTreatment ' => $ byTreatmentRiskOp ,
63
67
],
64
68
];
65
69
}
@@ -74,8 +78,8 @@ public function getCartoTargeted($anrId)
74
78
$ this ->buildListScalesAndHeaders ($ anrId );
75
79
$ this ->buildListScalesOpRisk ($ anrId );
76
80
77
- list ($ counters , $ distrib ) = $ this ->getCountersRisks ('target ' );
78
- list ($ countersRiskOP , $ distribRiskOp ) = $ this ->getCountersOpRisks ('target ' );
81
+ list ($ counters , $ distrib, $ riskMaxSum , $ byTreatment ) = $ this ->getCountersRisks ('target ' );
82
+ list ($ countersRiskOP , $ distribRiskOp, $ riskOpMaxSum , $ byTreatmentRiskOp ) = $ this ->getCountersOpRisks ('target ' );
79
83
80
84
return [
81
85
'Impact ' => $ this ->listScales [Scale::TYPE_IMPACT ],
@@ -86,10 +90,14 @@ public function getCartoTargeted($anrId)
86
90
'riskInfo ' => [
87
91
'counters ' => $ counters ,
88
92
'distrib ' => $ distrib ,
93
+ 'riskMaxSum ' => $ riskMaxSum ,
94
+ 'byTreatment ' => $ byTreatment ,
89
95
],
90
96
'riskOp ' => [
91
97
'counters ' => $ countersRiskOP ,
92
98
'distrib ' => $ distribRiskOp ,
99
+ 'riskOpMaxSum ' => $ riskOpMaxSum ,
100
+ 'byTreatment ' => $ byTreatmentRiskOp ,
93
101
],
94
102
];
95
103
}
@@ -187,7 +195,10 @@ public function getCountersRisks($mode = 'raw')
187
195
$ changeField = $ mode == 'raw ' ? 'ir.cacheMaxRisk ' : 'ir.cacheTargetedRisk ' ;
188
196
$ query = $ this ->get ('instanceRiskTable ' )->getRepository ()->createQueryBuilder ('ir ' );
189
197
$ result = $ query ->select ([
190
- 'ir.id as myid ' , 'IDENTITY(ir.amv) as amv ' , 'IDENTITY(ir.asset) as asset ' , 'IDENTITY(ir.threat) as threat ' , 'IDENTITY(ir.vulnerability) as vulnerability ' , $ changeField . ' as maximus ' ,
198
+ 'ir.id as myid ' ,
199
+ 'ir.kindOfMeasure as treatment ' ,
200
+ 'IDENTITY(ir.amv) as amv ' , 'IDENTITY(ir.asset) as asset ' , 'IDENTITY(ir.threat) as threat ' , 'IDENTITY(ir.vulnerability) as vulnerability ' ,
201
+ $ changeField . ' as maximus ' ,
191
202
'i.c as ic ' , 'i.i as ii ' , 'i.d as id ' , 'IDENTITY(i.object) as object ' ,
192
203
'm.c as mc ' , 'm.i as mi ' , 'm.a as ma ' ,
193
204
'o.scope ' ,
@@ -198,7 +209,23 @@ public function getCountersRisks($mode = 'raw')
198
209
->innerJoin ('ir.threat ' , 'm ' )
199
210
->innerJoin ('i.object ' , 'o ' )->getQuery ()->getResult ();
200
211
201
- $ counters = $ distrib = $ temp = [];
212
+ $ counters = $ distrib = $ riskMaxSum = $ temp = [];
213
+ $ byTreatment = [
214
+ 'treated ' => [],
215
+ 'not_treated ' => [],
216
+ 'reduction ' => [],
217
+ 'denied ' => [],
218
+ 'accepted ' => [],
219
+ 'shared ' => [],
220
+ 'all ' => [
221
+ 'reduction ' => [],
222
+ 'denied ' => [],
223
+ 'accepted ' => [],
224
+ 'shared ' => [],
225
+ 'not_treated ' => [],
226
+ ]
227
+ ];
228
+
202
229
foreach ($ result as $ r ) {
203
230
if (!isset ($ r ['threat ' ]) || !isset ($ r ['vulnerability ' ])) {
204
231
continue ;
@@ -227,7 +254,7 @@ public function getCountersRisks($mode = 'raw')
227
254
'amv ' => $ r ['asset ' ] . '; ' . $ r ['threat ' ] . '; ' . $ r ['vulnerability ' ],
228
255
'max ' => $ max ,
229
256
'color ' => $ this ->getColor ($ max ,'riskInfo ' ),
230
- 'uuid ' => $ r ['amv ' ]
257
+ 'treatment ' => $ r ['treatment ' ]
231
258
];
232
259
233
260
// on est obligé de faire l'algo en deux passes pour pouvoir compter les objets globaux qu'une seule fois
@@ -261,19 +288,79 @@ public function getCountersRisks($mode = 'raw')
261
288
}
262
289
263
290
if (!isset ($ counters [$ context ['impact ' ]][$ context ['right ' ]])) {
264
- $ counters [$ context ['impact ' ]][$ context ['right ' ]] = [] ;
291
+ $ counters [$ context ['impact ' ]][$ context ['right ' ]] = 0 ;
265
292
}
266
293
267
294
if (!isset ($ distrib [$ context ['color ' ]])) {
268
- $ distrib [$ context ['color ' ]] = [];
295
+ $ distrib [$ context ['color ' ]] = 0 ;
296
+ }
297
+
298
+ if (!isset ($ riskMaxSum [$ context ['color ' ]])) {
299
+ $ riskMaxSum [$ context ['color ' ]] = 0 ;
300
+ }
301
+
302
+ $ counters [$ context ['impact ' ]][$ context ['right ' ]] += 1 ;
303
+ $ distrib [$ context ['color ' ]] += 1 ;
304
+ $ riskMaxSum [$ context ['color ' ]] += $ context ['max ' ];
305
+
306
+ if ($ context ['treatment ' ] !== 5 ) {
307
+ if (!isset ($ byTreatment ['treated ' ][$ context ['color ' ]]['count ' ])) {
308
+ $ byTreatment ['treated ' ][$ context ['color ' ]]['count ' ] = 0 ;
309
+ }
310
+
311
+ if (!isset ($ byTreatment ['treated ' ][$ context ['color ' ]]['sum ' ])) {
312
+ $ byTreatment ['treated ' ][$ context ['color ' ]]['sum ' ] = 0 ;
313
+ }
314
+
315
+ $ byTreatment ['treated ' ][$ context ['color ' ]]['count ' ] += 1 ;
316
+ $ byTreatment ['treated ' ][$ context ['color ' ]]['sum ' ] += $ context ['max ' ];
317
+ }
318
+
319
+ switch ($ context ['treatment ' ]) {
320
+ case 1 :
321
+ $ kindOfTreatment = 'reduction ' ;
322
+ break ;
323
+ case 2 :
324
+ $ kindOfTreatment = 'denied ' ;
325
+ break ;
326
+ case 3 :
327
+ $ kindOfTreatment = 'accepted ' ;
328
+ break ;
329
+ case 4 :
330
+ $ kindOfTreatment = 'shared ' ;
331
+ break ;
332
+ case 5 :
333
+ $ kindOfTreatment = 'not_treated ' ;
334
+ break ;
335
+ }
336
+
337
+
338
+ if (!isset ($ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ])) {
339
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ] = 0 ;
340
+ }
341
+
342
+ if (!isset ($ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ])) {
343
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ] = 0 ;
269
344
}
270
- array_push ($ counters [$ context ['impact ' ]][$ context ['right ' ]],$ context ['uuid ' ]);
271
- array_push ($ distrib [$ context ['color ' ]],$ context ['uuid ' ]);
345
+
346
+ if (!isset ($ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['count ' ])) {
347
+ $ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['count ' ] = 0 ;
348
+ }
349
+
350
+ if (!isset ($ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['sum ' ])) {
351
+ $ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['sum ' ] = 0 ;
352
+ }
353
+
354
+ $ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['count ' ] += 1 ;
355
+ $ byTreatment [$ kindOfTreatment ][$ context ['color ' ]]['sum ' ] += $ context ['max ' ];
356
+
357
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ] += 1 ;
358
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ] += $ context ['max ' ];
272
359
}
273
360
}
274
361
}
275
362
276
- return [$ counters , $ distrib ];
363
+ return [$ counters , $ distrib, $ riskMaxSum , $ byTreatment ];
277
364
}
278
365
279
366
/**
@@ -287,14 +374,31 @@ public function getCountersOpRisks($mode = 'raw')
287
374
$ query = $ this ->get ('instanceRiskOpTable ' )->getRepository ()->createQueryBuilder ('iro ' );
288
375
$ result = $ query ->select ([
289
376
'iro as instanceRiskOp ' , 'iro.cacheNetRisk as netRisk ' , 'iro.cacheTargetedRisk as targetedRisk ' ,
377
+ 'iro.kindOfMeasure as treatment ' ,
290
378
implode (', ' , $ valuesField )
291
379
])->where ('iro.anr = :anrid ' )
292
380
->setParameter (':anrid ' , $ this ->anr ->get ('id ' ))
293
381
->andWhere ("iro.cacheNetRisk != -1 " )
294
382
->getQuery ()->getResult ();
295
383
296
384
297
- $ countersRiskOP = $ distribRiskOp = $ temp = [];
385
+ $ countersRiskOP = $ distribRiskOp = $ riskOpMaxSum = $ temp = [];
386
+ $ byTreatment = [
387
+ 'treated ' => [],
388
+ 'not_treated ' => [],
389
+ 'reduction ' => [],
390
+ 'denied ' => [],
391
+ 'accepted ' => [],
392
+ 'shared ' => [],
393
+ 'all ' => [
394
+ 'reduction ' => [],
395
+ 'denied ' => [],
396
+ 'accepted ' => [],
397
+ 'shared ' => [],
398
+ 'not_treated ' => [],
399
+ ]
400
+ ];
401
+
298
402
foreach ($ result as $ r ) {
299
403
foreach ($ r ['instanceRiskOp ' ]->getOperationalInstanceRiskScales () as $ operationalInstanceRiskScale ) {
300
404
$ operationalRiskScaleType = $ operationalInstanceRiskScale ->getOperationalRiskScaleType ();
@@ -318,22 +422,80 @@ public function getCountersOpRisks($mode = 'raw')
318
422
$ max = $ r ['targetedRisk ' ];
319
423
$ prob = $ r ['targetedProb ' ];
320
424
}
321
-
322
- $ id = $ r ['id ' ];
425
+ $ treatment = $ r ['treatment ' ];
323
426
$ color = $ this ->getColor ($ max , 'riskOp ' );
324
427
325
428
if (!isset ($ countersRiskOP [$ imax ][$ prob ])) {
326
- $ countersRiskOP [$ imax ][$ prob ] = [] ;
429
+ $ countersRiskOP [$ imax ][$ prob ] = 0 ;
327
430
}
328
431
329
432
if (!isset ($ distribRiskOp [$ color ])) {
330
- $ distribRiskOp [$ color ] = [];
433
+ $ distribRiskOp [$ color ] = 0 ;
434
+ }
435
+
436
+ if (!isset ($ riskOpMaxSum [$ color ])) {
437
+ $ riskOpMaxSum [$ color ] = 0 ;
438
+ }
439
+
440
+ $ countersRiskOP [$ imax ][$ prob ] += 1 ;
441
+ $ distribRiskOp [$ color ] += 1 ;
442
+ $ riskOpMaxSum [$ color ] += $ max ;
443
+
444
+ if ($ treatment !== 5 ) {
445
+ if (!isset ($ byTreatment ['treated ' ][$ color ]['count ' ])) {
446
+ $ byTreatment ['treated ' ][$ color ]['count ' ] = 0 ;
447
+ }
448
+
449
+ if (!isset ($ byTreatment ['treated ' ][$ color ]['sum ' ])) {
450
+ $ byTreatment ['treated ' ][$ color ]['sum ' ] = 0 ;
451
+ }
452
+
453
+ $ byTreatment ['treated ' ][$ color ]['count ' ] += 1 ;
454
+ $ byTreatment ['treated ' ][$ color ]['sum ' ] += $ max ;
331
455
}
332
- array_push ($ countersRiskOP [$ imax ][$ prob ],$ r ['id ' ]);
333
- array_push ($ distribRiskOp [$ color ],$ r ['id ' ]);
456
+
457
+ switch ($ treatment ) {
458
+ case 1 :
459
+ $ kindOfTreatment = 'reduction ' ;
460
+ break ;
461
+ case 2 :
462
+ $ kindOfTreatment = 'denied ' ;
463
+ break ;
464
+ case 3 :
465
+ $ kindOfTreatment = 'accepted ' ;
466
+ break ;
467
+ case 4 :
468
+ $ kindOfTreatment = 'shared ' ;
469
+ break ;
470
+ case 5 :
471
+ $ kindOfTreatment = 'not_treated ' ;
472
+ break ;
473
+ }
474
+
475
+ if (!isset ($ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ])) {
476
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ] = 0 ;
477
+ }
478
+
479
+ if (!isset ($ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ])) {
480
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ] = 0 ;
481
+ }
482
+
483
+ if (!isset ($ byTreatment [$ kindOfTreatment ][$ color ]['count ' ])) {
484
+ $ byTreatment [$ kindOfTreatment ][$ color ]['count ' ] = 0 ;
485
+ }
486
+
487
+ if (!isset ($ byTreatment [$ kindOfTreatment ][$ color ]['sum ' ])) {
488
+ $ byTreatment [$ kindOfTreatment ][$ color ]['sum ' ] = 0 ;
489
+ }
490
+
491
+ $ byTreatment [$ kindOfTreatment ][$ color ]['count ' ] += 1 ;
492
+ $ byTreatment [$ kindOfTreatment ][$ color ]['sum ' ] += $ max ;
493
+
494
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['count ' ] += 1 ;
495
+ $ byTreatment ['all ' ][$ kindOfTreatment ]['sum ' ] += $ max ;
334
496
}
335
497
336
- return [$ countersRiskOP , $ distribRiskOp ];
498
+ return [$ countersRiskOP , $ distribRiskOp, $ riskOpMaxSum , $ byTreatment ];
337
499
338
500
}
339
501
0 commit comments