From 6ea5426abddffb4be6d92fe23baa04990570951d Mon Sep 17 00:00:00 2001
From: "d.buechler" <d.buechler@adito.de>
Date: Tue, 20 Aug 2019 14:10:51 +0200
Subject: [PATCH] =?UTF-8?q?Erste=20Version=20der=20Gesamt=C3=BCbersicht=20?=
 =?UTF-8?q?f=C3=BCr=20Personendubletten=20erstellt.=20Diese=20zeigt=20die?=
 =?UTF-8?q?=20Namen=20der=20Personen=20und=20die=20Anzahl=20der=20DUblette?=
 =?UTF-8?q?n=20im=20Cluster=20an.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Duplicates_entity/Duplicates_entity.aod   |  3 ++
 .../recordcontainer/contentProcess.js         | 49 ++++++++++++++++++-
 .../PersonDuplicatesFilter_view.aod           |  3 ++
 3 files changed, 54 insertions(+), 1 deletion(-)

diff --git a/entity/Duplicates_entity/Duplicates_entity.aod b/entity/Duplicates_entity/Duplicates_entity.aod
index 5a57d290642..c3fcb61abfd 100644
--- a/entity/Duplicates_entity/Duplicates_entity.aod
+++ b/entity/Duplicates_entity/Duplicates_entity.aod
@@ -10,9 +10,12 @@
     </entityProvider>
     <entityField>
       <name>CLUSTER_DESCRIPTION</name>
+      <title>Cluster description</title>
     </entityField>
     <entityField>
       <name>COUNT_DUPLICATES_IN_CLUSTER</name>
+      <title>Count duplicates in cluster</title>
+      <contentType>NUMBER</contentType>
     </entityField>
     <entityField>
       <name>TARGET_ENTITY</name>
diff --git a/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js b/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js
index adde01802a3..3626ae33b75 100644
--- a/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js
+++ b/entity/Duplicates_entity/recordcontainers/recordcontainer/contentProcess.js
@@ -1,12 +1,59 @@
+import("system.db");
 import("system.vars");
 import("system.result");
 
+var INDEX_ID = 0;
+var INDEX_CLUSTERID = 1;
+var INDEX_FIRSTNAME = 2;
+var INDEX_LASTNAME = 3;
+
 let targetEntity = vars.get("$param.TargetEntity");
 let duplicates = [];
 
 if(targetEntity == "Person_entity")
 {
-    duplicates.push([123, "Description of person cluster", 4, "Person_entity"]);
+    //duplicates.push([123, "Description of person cluster", 4, "Person_entity"]);
+    
+    let personInfosQuery = "select DUPLICATECLUSTERS.ID, CLUSTERID, FIRSTNAME, LASTNAME"
+                            + " from DUPLICATECLUSTERS"
+                            + " join CONTACT on CONTACT.CONTACTID = DUPLICATEID"
+                            + " join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID"
+                            + " ORDER BY CLUSTERID";
+    let personInfos = db.table(personInfosQuery);
+    
+    let recordClusterId = "";
+    let recordDescription = "";
+    let recordDuplicateInClusterCount = 0;
+    
+    for (let i = 0; i < personInfos.length; i++) 
+    {
+        let currentClusterId = personInfos[i][INDEX_CLUSTERID];
+        let currentDescription = personInfos[i][INDEX_FIRSTNAME] + " " + personInfos[i][INDEX_LASTNAME];
+        
+        if(i == 0)
+        {
+            recordClusterId = currentClusterId;
+            recordDescription = currentDescription;
+            recordDuplicateInClusterCount = 1;
+            continue;
+        }
+        
+        if(recordClusterId == currentClusterId)
+        {
+            recordDescription += ", " + currentDescription;
+            recordDuplicateInClusterCount++;
+        }
+        else
+        {
+            let currentRecordId = personInfos[i][INDEX_ID];
+            duplicates.push([currentRecordId, recordDescription, recordDuplicateInClusterCount, "Person_entity"]);
+            
+            recordClusterId = currentClusterId
+            recordDescription = currentDescription
+            recordDuplicateInClusterCount = 1;
+        }
+    }
+    
 }
 else if(targetEntity == "Organisation_entity")
 {
diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
index be3fc312138..aa244f7a44f 100644
--- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
+++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod
@@ -11,6 +11,9 @@
     <tableViewTemplate>
       <name>PersonDuplicatesTable</name>
       <entityField>#ENTITY</entityField>
+      <isCreatable v="false" />
+      <isEditable v="false" />
+      <isDeletable v="false" />
       <columns>
         <neonTableColumn>
           <name>7508e984-6a0b-4126-ab49-452e2b54f76d</name>
-- 
GitLab