mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Transfer evaluations (and related documents) during merge
This commit is contained in:
parent
9a3fef862e
commit
26fd16ab07
6
.changes/unreleased/Fixed-20250520-164429.yaml
Normal file
6
.changes/unreleased/Fixed-20250520-164429.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
kind: Fixed
|
||||||
|
body: Fix the transfer of evaluations and documents during of accompanyingperiodwork
|
||||||
|
time: 2025-05-20T16:44:29.093304653+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
||||||
|
SchemaChange: No schema change
|
@ -17,9 +17,9 @@ use Doctrine\ORM\EntityManagerInterface;
|
|||||||
/**
|
/**
|
||||||
* Service for merging two AccompanyingPeriodWork entities into a single entity.
|
* Service for merging two AccompanyingPeriodWork entities into a single entity.
|
||||||
*/
|
*/
|
||||||
class AccompanyingPeriodWorkMergeService
|
readonly class AccompanyingPeriodWorkMergeService
|
||||||
{
|
{
|
||||||
public function __construct(private readonly EntityManagerInterface $em) {}
|
public function __construct(private EntityManagerInterface $em) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Merges two AccompanyingPeriodWork entities into one by transferring relevant data and removing the obsolete entity.
|
* Merges two AccompanyingPeriodWork entities into one by transferring relevant data and removing the obsolete entity.
|
||||||
@ -35,8 +35,9 @@ class AccompanyingPeriodWorkMergeService
|
|||||||
$this->alterStartDate($toKeep, $toDelete);
|
$this->alterStartDate($toKeep, $toDelete);
|
||||||
$this->alterEndDate($toKeep, $toDelete);
|
$this->alterEndDate($toKeep, $toDelete);
|
||||||
$this->concatenateComments($toKeep, $toDelete);
|
$this->concatenateComments($toKeep, $toDelete);
|
||||||
|
$this->transferEvaluationsSQL($toKeep, $toDelete);
|
||||||
$this->transferWorkflowsSQL($toKeep, $toDelete);
|
$this->transferWorkflowsSQL($toKeep, $toDelete);
|
||||||
$this->updateReferencesSQL($toKeep, $toDelete);
|
$this->updateReferences($toKeep, $toDelete);
|
||||||
$entityManager->remove($toDelete);
|
$entityManager->remove($toDelete);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -54,6 +55,16 @@ class AccompanyingPeriodWorkMergeService
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function transferEvaluationsSQL(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
||||||
|
{
|
||||||
|
$this->em->getConnection()->executeQuery(
|
||||||
|
"UPDATE chill_person_accompanying_period_work_evaluation cpapwe
|
||||||
|
SET accompanyingperiodwork_id = :toKeepId
|
||||||
|
WHERE cpapwe.accompanyingperiodwork_id = :toDeleteId",
|
||||||
|
['toKeepId' => $toKeep->getId(), 'toDeleteId' => $toDelete->getId()]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private function alterStartDate(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
private function alterStartDate(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
||||||
{
|
{
|
||||||
$startDate = min($toKeep->getStartDate(), $toDelete->getStartDate());
|
$startDate = min($toKeep->getStartDate(), $toDelete->getStartDate());
|
||||||
@ -74,16 +85,17 @@ class AccompanyingPeriodWorkMergeService
|
|||||||
|
|
||||||
private function concatenateComments(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
private function concatenateComments(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
||||||
{
|
{
|
||||||
|
if ($toDelete->getNote() !== '') {
|
||||||
$toKeep->setNote($toKeep->getNote()."\n\n-----------------\n\n".$toDelete->getNote());
|
$toKeep->setNote($toKeep->getNote()."\n\n-----------------\n\n".$toDelete->getNote());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($toDelete->getPrivateComment()->getComments()) > 0) {
|
||||||
$toKeep->getPrivateComment()->concatenateComments($toDelete->getPrivateComment());
|
$toKeep->getPrivateComment()->concatenateComments($toDelete->getPrivateComment());
|
||||||
}
|
}
|
||||||
|
|
||||||
private function updateReferencesSQL(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
|
||||||
{
|
|
||||||
foreach ($toDelete->getAccompanyingPeriodWorkEvaluations() as $evaluation) {
|
|
||||||
$toKeep->addAccompanyingPeriodWorkEvaluation($evaluation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function updateReferences(AccompanyingPeriodWork $toKeep, AccompanyingPeriodWork $toDelete): void
|
||||||
|
{
|
||||||
foreach ($toDelete->getReferrers() as $referrer) {
|
foreach ($toDelete->getReferrers() as $referrer) {
|
||||||
// we only keep the current referrer
|
// we only keep the current referrer
|
||||||
$toKeep->addReferrer($referrer);
|
$toKeep->addReferrer($referrer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user