Merge branch 'issue182_fix_doublon_bug' into 'master'

Adjust query to transfer relationship from one person to another

See merge request Chill-Projet/chill-bundles!603
This commit is contained in:
LenaertsJ 2023-11-07 12:26:18 +00:00
commit a4a4aa119e
2 changed files with 17 additions and 2 deletions

View File

@ -0,0 +1,5 @@
kind: Fixed
body: Fix merging of double person files. Adjustement relationship sql statement
time: 2023-10-30T11:54:41.028058144+01:00
custom:
Issue: "182"

View File

@ -24,9 +24,19 @@ class PersonMoveRelationHandler implements PersonMoveSqlHandlerInterface
public function getSqls(string $className, string $field, Person $from, Person $to): array
{
/* Insert sql statement taking into account two cases.
One where the person is the fromperson and another where the person is the toperson in the relationship.*/
$insertSql = sprintf(<<<'SQL'
INSERT INTO chill_person_relationships (id, relation_id, reverse, createdat, createdby_id, fromperson_id, toperson_id)
SELECT nextval('chill_person_relationships_id_seq'), relation_id, reverse, createdat, createdby_id, fromperson_id, toperson_id
SELECT nextval('chill_person_relationships_id_seq'), relation_id, reverse, createdat, createdby_id,
CASE
WHEN cpr.fromperson_id = %d THEN %d
ELSE cpr.fromperson_id
END as fromperson,
CASE
WHEN cpr.toperson_id = %d THEN %d
ELSE cpr.toperson_id
END as toperson
FROM chill_person_relationships cpr
WHERE fromperson_id = %d OR toperson_id = %d
AND NOT EXISTS (
@ -35,7 +45,7 @@ class PersonMoveRelationHandler implements PersonMoveSqlHandlerInterface
cpr2.fromperson_id = %d AND cpr2.toperson_id = %d
OR cpr2.fromperson_id = %d AND cpr2.toperson_id = %d
);
SQL, $from->getId(), $from->getId(), $to->getId(), $from->getId(), $from->getId(), $to->getId());
SQL, $from->getId(), $to->getId(), $from->getId(), $to->getId(), $from->getId(), $from->getId(), $to->getId(), $from->getId(), $from->getId(), $to->getId());
$deleteSql = [
sprintf('DELETE FROM chill_person_relationships WHERE fromperson_id = %d', $from->getId()),