From bdd9226b298e4dd6fa2a573bc14118dc95558854 Mon Sep 17 00:00:00 2001 From: Benn Oshrin Date: Mon, 7 Oct 2024 20:21:52 -0400 Subject: [PATCH] Fix implementation of AR-Identifier-2 (NOJIRA) --- app/src/Model/Table/IdentifiersTable.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/Model/Table/IdentifiersTable.php b/app/src/Model/Table/IdentifiersTable.php index fa5f54cc1..ad916e28d 100644 --- a/app/src/Model/Table/IdentifiersTable.php +++ b/app/src/Model/Table/IdentifiersTable.php @@ -288,6 +288,7 @@ public function ruleUniqueIdentifier($entity, $options) { // Note we specifically do NOT check status, since a Suspended Identifier // will still prevent duplicate assignment. (AR-Identifier-3) $whereClause = [ + // type_id will imply CO ID, so we don't need to check it explicitly 'type_id' => $entity->type_id ]; @@ -297,6 +298,13 @@ public function ruleUniqueIdentifier($entity, $options) { $whereClause['identifier'] = $entity->identifier; } + // We need to only check Identifiers attached to the same type of Entity + if(!empty($entity->person_id)) { + $whereClause[] = 'person_id IS NOT NULL'; + } elseif(!empty($entity->group_id)) { + $whereClause[] = 'group_id IS NOT NULL'; + } + $identifier = $this->find() ->where($whereClause) ->epilog('FOR UPDATE')