Skip to content

Commit c4fc3fc

Browse files
committed
Fixed the Implementation plan report generation where recommendations duplicated, fixed the recommendations display in the treatmant plan to show as many as linked to the risks of the same asset.
1 parent 398a423 commit c4fc3fc

2 files changed

Lines changed: 18 additions & 10 deletions

File tree

src/Service/AnrRecommendationRiskService.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,22 @@ public function getList(FormattedInputParams $formattedInputParams): array
4646
$globalObjectsUuids = [];
4747
/** @var Entity\RecommendationRisk $recommendationRisk */
4848
foreach ($this->recommendationRiskTable->findByParams($formattedInputParams) as $recommendationRisk) {
49-
if ($includeRelations
50-
&& $recommendationRisk->getGlobalObject() !== null
51-
&& isset($globalObjectsUuids[$recommendationRisk->getGlobalObject()->getUuid()])
52-
) {
53-
continue;
49+
if ($includeRelations && $recommendationRisk->hasGlobalObjectRelation()) {
50+
$recommendation = $recommendationRisk->getRecommendation();
51+
$key = 'o' . $recommendationRisk->getGlobalObject()->getUuid()
52+
. '-' . $recommendationRisk->getInstanceRisk()->getThreat()->getUuid()
53+
. '-' . $recommendationRisk->getInstanceRisk()->getVulnerability()->getUuid()
54+
. '-' . $recommendation->getUuid();
55+
if (isset($globalObjectsRecommendationsKeys[$key])) {
56+
continue;
57+
}
58+
$globalObjectsRecommendationsKeys[$key] = $key;
5459
}
5560

5661
$recommendationRisksData[] = $this->getPreparedRecommendationRiskData(
5762
$recommendationRisk,
5863
$includeRelations
5964
);
60-
61-
if ($includeRelations && $recommendationRisk->getGlobalObject() !== null) {
62-
$globalObjectsUuids[$recommendationRisk->getGlobalObject()->getUuid()] = true;
63-
}
6465
}
6566

6667
return $recommendationRisksData;
@@ -238,7 +239,9 @@ public function getTreatmentPlan(Entity\Anr $anr): array
238239
'maxRisk' => $instanceRisk->getCacheMaxRisk(),
239240
];
240241
} else {
241-
$path = $instanceRisk->getInstance()->getHierarchyString();
242+
/** @var Entity\Instance $instance */
243+
$instance = $instanceRisk->getInstance();
244+
$path = $instance->getHierarchyString();
242245
}
243246

244247
$instanceRisksData[$type][$index] = array_merge($instanceRiskData, [

src/Service/DeliverableGenerationService.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2420,8 +2420,13 @@ private function generateTableImplementationPlan()
24202420
}
24212421

24222422
$globalObjectsRecommendationsKeys = [];
2423+
$processedRecommendationsUuids = [];
24232424
foreach ($recommendationRisks as $recommendationRisk) {
24242425
$recommendation = $recommendationRisk->getRecommendation();
2426+
if (isset($processedRecommendationsUuids[$recommendation->getUuid()])) {
2427+
continue;
2428+
}
2429+
$processedRecommendationsUuids[$recommendation->getUuid()] = true;
24252430
if ($recommendationRisk->hasGlobalObjectRelation()) {
24262431
$key = 'o' . $recommendationRisk->getGlobalObject()->getUuid()
24272432
. '-' . $recommendationRisk->getInstanceRisk()->getThreat()->getUuid()

0 commit comments

Comments
 (0)