diff --git a/src/Controller/ApiAnrAmvsController.php b/src/Controller/ApiAnrAmvsController.php index af24654a..f633449c 100755 --- a/src/Controller/ApiAnrAmvsController.php +++ b/src/Controller/ApiAnrAmvsController.php @@ -46,7 +46,6 @@ public function get($id) return $this->getPreparedJsonResponse($this->anrAmvService->getAmvData($anr, $id)); } - /** * @param array $data */ diff --git a/src/Service/AnrInstanceRiskOpService.php b/src/Service/AnrInstanceRiskOpService.php index 469b97f6..40c576fd 100644 --- a/src/Service/AnrInstanceRiskOpService.php +++ b/src/Service/AnrInstanceRiskOpService.php @@ -150,8 +150,18 @@ public function createSpecificOperationalInstanceRisk(Entity\Anr $anr, array $da ->setObject($instance->getObject()) ->setIsSpecific(true) ->setRiskCacheCode($rolfRisk->getCode()) - ->setRiskCacheLabels($rolfRisk->getLabels()) - ->setRiskCacheDescriptions($rolfRisk->getDescriptions()) + ->setRiskCacheLabels([ + 'riskCacheLabel1' => $rolfRisk->getLabel(1), + 'riskCacheLabel2' => $rolfRisk->getLabel(2), + 'riskCacheLabel3' => $rolfRisk->getLabel(3), + 'riskCacheLabel4' => $rolfRisk->getLabel(4), + ]) + ->setRiskCacheDescriptions([ + 'riskCacheDescription1' => $rolfRisk->getDescription(1), + 'riskCacheDescription2' => $rolfRisk->getDescription(2), + 'riskCacheDescription3' => $rolfRisk->getDescription(3), + 'riskCacheDescription4' => $rolfRisk->getDescription(4), + ]) ->setCreator($this->connectedUser->getEmail()); $operationalRiskScaleTypes = $this->operationalRiskScaleTypeTable->findByAnrAndScaleType( diff --git a/src/Service/AnrModelService.php b/src/Service/AnrModelService.php index 2fc3209b..9ca31e62 100644 --- a/src/Service/AnrModelService.php +++ b/src/Service/AnrModelService.php @@ -36,7 +36,7 @@ public function getModelsListOfClient(): array foreach ($this->clientTable->findFirstClient()->getClientModels() as $clientModel) { $modelIds[] = $clientModel->getModelId(); } - foreach ($this->modelTable->fundGenericsAndSpecificsByIds($modelIds) as $model) { + foreach ($this->modelTable->findGenericsAndSpecificsByIds($modelIds) as $model) { $result[] = array_merge(['id' => $model->getId()], $model->getLabels()); } diff --git a/src/Service/AnrRecommendationHistoryService.php b/src/Service/AnrRecommendationHistoryService.php index 2b784d11..3af70f59 100755 --- a/src/Service/AnrRecommendationHistoryService.php +++ b/src/Service/AnrRecommendationHistoryService.php @@ -87,7 +87,7 @@ public function createFromRecommendationRisk( $recommendationHistory = (new RecommendationHistory()) ->setAnr($anr) - ->setImplComment($data['comment']) + ->setImplComment((string)$data['comment']) ->setIsFinal($isFinal) ->setRecoCode($recommendation->getCode()) ->setRecoDescription($recommendation->getDescription()) diff --git a/src/Service/AnrRolfRiskService.php b/src/Service/AnrRolfRiskService.php index d526e08f..3d9dffbc 100755 --- a/src/Service/AnrRolfRiskService.php +++ b/src/Service/AnrRolfRiskService.php @@ -153,26 +153,20 @@ public function update(Entity\Anr $anr, int $id, array $data): Entity\RolfRisk if ($rolfRisk->areLabelsDifferent($data) || $rolfRisk->areDescriptionsDifferent($data)) { $rolfRisk->setLabels($data)->setDescriptions($data); - /* If the labels or descriptions changed the operational risks labels have to be updated as well. */ - foreach ($rolfRisk->getTags() as $rolfTag) { - foreach ($rolfTag->getObjects() as $monarcObject) { - $instancesRisksOp = $this->instanceRiskOpTable->findByObjectAndRolfRisk($monarcObject, $rolfRisk); - foreach ($instancesRisksOp as $instanceRiskOp) { - $instanceRiskOp->setRiskCacheCode($rolfRisk->getCode()) - ->setRiskCacheLabels([ - 'riskCacheLabel1' => $rolfRisk->getLabel(1), - 'riskCacheLabel2' => $rolfRisk->getLabel(2), - 'riskCacheLabel3' => $rolfRisk->getLabel(3), - 'riskCacheLabel4' => $rolfRisk->getLabel(4), - ]) - ->setRiskCacheDescriptions([ - 'riskCacheDescription1' => $rolfRisk->getDescription(1), - 'riskCacheDescription2' => $rolfRisk->getDescription(2), - 'riskCacheDescription3' => $rolfRisk->getDescription(3), - 'riskCacheDescription4' => $rolfRisk->getDescription(4), - ]); - - $this->instanceRiskOpTable->save($instanceRiskOp, false); + /* If there is no tag linked, search directly by the rolf risk. */ + if ($rolfRisk->getTags()->isEmpty()) { + /** @var Entity\InstanceRiskOp[] $instancesRisksOp */ + $instancesRisksOp = $this->instanceRiskOpTable->findByRolfRisk($rolfRisk); + $this->updateOperationalRisksCacheValues($instancesRisksOp, $rolfRisk); + } else { + /* If the labels or descriptions changed the operational risks labels have to be updated as well. */ + foreach ($rolfRisk->getTags() as $rolfTag) { + foreach ($rolfTag->getObjects() as $monarcObject) { + $instancesRisksOp = $this->instanceRiskOpTable->findByObjectAndRolfRisk( + $monarcObject, + $rolfRisk + ); + $this->updateOperationalRisksCacheValues($instancesRisksOp, $rolfRisk); } } } @@ -222,6 +216,31 @@ public function linkMeasuresToRisks( $this->measureTable->flush(); } + /** + * @param Entity\InstanceRiskOp[] $instanceRisksOp + */ + private function updateOperationalRisksCacheValues(array $instanceRisksOp, Entity\RolfRisk $rolfRisk): void + { + foreach ($instanceRisksOp as $instanceRiskOp) { + $instanceRiskOp->setRiskCacheCode($rolfRisk->getCode()) + ->setRiskCacheLabels([ + 'riskCacheLabel1' => $rolfRisk->getLabel(1), + 'riskCacheLabel2' => $rolfRisk->getLabel(2), + 'riskCacheLabel3' => $rolfRisk->getLabel(3), + 'riskCacheLabel4' => $rolfRisk->getLabel(4), + ]) + ->setRiskCacheDescriptions([ + 'riskCacheDescription1' => $rolfRisk->getDescription(1), + 'riskCacheDescription2' => $rolfRisk->getDescription(2), + 'riskCacheDescription3' => $rolfRisk->getDescription(3), + 'riskCacheDescription4' => $rolfRisk->getDescription(4), + ]) + ->setUpdater($this->connectedUser->getEmail()); + + $this->instanceRiskOpTable->save($instanceRiskOp, false); + } + } + private function removeRolfRisk(Entity\Anr $anr, Entity\RolfRisk $rolfRisk, bool $saveInDb = true): void { foreach ($this->instanceRiskOpTable->findByAnrAndRolfRisk($anr, $rolfRisk) as $instanceRiskOp) {