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
|
public function createOrUpdate(
Criterion $criterion,
DateTime $dateImport
): CriterionValue {
$comment = $criterion->getComment();
$criterionDatabase = $this->getEntityManager()->getRepository(Criterion::class)
->findOneBy(['keyCriterion' => $criterion->getKeyCriterion()]);
if(!$criterionDatabase) {
$criterion->setUpdatedAt($dateImport);
$criterionValue = $this->createCriterionValue($comment, $dateImport);
$criterionValue->setCriterion($criterion);
$this->getEntityManager()->persist($criterion);
$this->getEntityManager()->persist($criterionValue);
$this->getEntityManager()->flush();
return $criterionValue;
}
$criterionDatabase->setLabelCriterion($criterion->getLabelCriterion());
$criterionDatabase->setUpdatedAt($dateImport);
$criterionValues = $criterionDatabase->getCriterionValues();
$criterionValueMatch = null;
foreach($criterionValues as $criterionValue) {
if($comment === $criterionValue->getLabelCriterionValue()) {
$criterionValueMatch = $criterionValue;
break;
}
}
if(!$criterionValueMatch){
$criterionValue = $this->createCriterionValue($comment, $dateImport);
$criterionValue->setCriterion($criterionDatabase);
$this->getEntityManager()->persist($criterionValue);
return $criterionValue;
}
return $criterionValueMatch;
}
private function createCriterionValue(
string $comment,
Datetime $dateImport
) : CriterionValue {
return (new CriterionValue())->setLabelCriterionValue($comment)->setUpdatedAt($dateImport);
} |
Partager