From 3be997fa95055a483388d3e64a0f65559048f23f Mon Sep 17 00:00:00 2001
From: Maria Hofmann <m.hofmann@adito.de>
Date: Wed, 26 Jun 2019 11:46:47 +0200
Subject: [PATCH] Field "value"

---
 aliasDefinition/Data_alias/Data_alias.aod     | 160 ++++++++++++++++++
 entity/DSGVO_entity/DSGVO_entity.aod          |   7 +-
 .../entityfields/value/dropDownProcess.js     |  10 --
 .../entityfields/value/valueProcess.js        |   0
 .../recordcontainers/db/conditionProcess.js   |   8 -
 .../value.value/expression.js                 |   4 +-
 .../recordcontainers/jdito/contentProcess.js  |  78 ++++++---
 7 files changed, 216 insertions(+), 51 deletions(-)
 delete mode 100644 entity/DSGVO_entity/entityfields/value/dropDownProcess.js
 delete mode 100644 entity/DSGVO_entity/entityfields/value/valueProcess.js

diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index 8ae24f0991d..48649f7db08 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -10201,6 +10201,166 @@
               </entityFieldDb>
             </entityFields>
           </entityDb>
+          <entityDb>
+            <name>AB_UNLINKEDMAIL</name>
+            <dbName></dbName>
+            <idColumn>AB_UNLINKEDMAILID</idColumn>
+            <idGeneratorType v="0" />
+            <idGeneratorInterval v="1" />
+            <documentation></documentation>
+            <title></title>
+            <description></description>
+            <auditSyncConfig>
+              <name>auditSyncConfig</name>
+              <auditMode v="0" />
+              <syncActive v="false" />
+              <syncComplete v="true" />
+              <syncDirection v="1" />
+              <syncIds></syncIds>
+            </auditSyncConfig>
+            <entityFields>
+              <entityFieldDb>
+                <name>MAIL</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="2005" />
+                <size v="2147483647" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SENDER</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="1000" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SUBJECT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="200" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>DATE_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_NEW</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>AB_UNLINKEDMAILID</name>
+                <dbName></dbName>
+                <primaryKey v="true" />
+                <columnType v="1" />
+                <size v="36" />
+                <scale v="0" />
+                <notNull v="true" />
+                <isUnique v="true" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>RECIPIENTS</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="4000" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>USER_EDIT</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="12" />
+                <size v="50" />
+                <scale v="0" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="false" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+              <entityFieldDb>
+                <name>SENTDATE</name>
+                <dbName></dbName>
+                <primaryKey v="false" />
+                <columnType v="93" />
+                <size v="29" />
+                <scale v="9" />
+                <notNull v="false" />
+                <isUnique v="false" />
+                <index v="true" />
+                <documentation></documentation>
+                <title></title>
+                <description></description>
+              </entityFieldDb>
+            </entityFields>
+          </entityDb>
         </entities>
       </entityGroup>
     </aliasDefDb>
diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod
index 0fb6a686862..8bf104a5a93 100644
--- a/entity/DSGVO_entity/DSGVO_entity.aod
+++ b/entity/DSGVO_entity/DSGVO_entity.aod
@@ -178,8 +178,6 @@
       <name>VALUE</name>
       <title>Value</title>
       <mandatory v="true" />
-      <dropDownProcess>%aditoprj%/entity/DSGVO_entity/entityfields/value/dropDownProcess.js</dropDownProcess>
-      <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/value/valueProcess.js</valueProcess>
     </entityField>
     <entityConsumer>
       <name>KeywordTablename</name>
@@ -297,12 +295,9 @@
       <recordFields>
         <element>DSGVOID.value</element>
         <element>ROW_ID.value</element>
-        <element>STATUORITYSOURCE.value</element>
-        <element>PURPOSE.value</element>
         <element>TABLENAME.value</element>
         <element>TYPE.value</element>
-        <element>VALID_TO.value</element>
-        <element>CONTACT_ID.value</element>
+        <element>VALUE.value</element>
       </recordFields>
     </jDitoRecordContainer>
   </recordContainers>
diff --git a/entity/DSGVO_entity/entityfields/value/dropDownProcess.js b/entity/DSGVO_entity/entityfields/value/dropDownProcess.js
deleted file mode 100644
index c8a14bde82f..00000000000
--- a/entity/DSGVO_entity/entityfields/value/dropDownProcess.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import("system.result");
-import("system.vars");
-import("Sql_lib");
-import("system.db");
-import("DSGVO_lib");
-
-
-var data = getDSGVOTable(vars.get("$param.currentPerson_param"), vars.get("$field.TABLENAME"));
-
-result.object(data);
\ No newline at end of file
diff --git a/entity/DSGVO_entity/entityfields/value/valueProcess.js b/entity/DSGVO_entity/entityfields/value/valueProcess.js
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/entity/DSGVO_entity/recordcontainers/db/conditionProcess.js b/entity/DSGVO_entity/recordcontainers/db/conditionProcess.js
index e35a5d6c723..e69de29bb2d 100644
--- a/entity/DSGVO_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/DSGVO_entity/recordcontainers/db/conditionProcess.js
@@ -1,8 +0,0 @@
-import("system.db");
-import("system.result");
-import("Sql_lib");
-
-var cond = new SqlCondition();
-cond.andPrepareVars("DSGVO.CONTACT_ID", "$param.currentPerson_param");
-/* TODO: use a preparedCondition when available*/
-result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
diff --git a/entity/DSGVO_entity/recordcontainers/db/recordfieldmappings/value.value/expression.js b/entity/DSGVO_entity/recordcontainers/db/recordfieldmappings/value.value/expression.js
index d047656e738..13e181d1db9 100644
--- a/entity/DSGVO_entity/recordcontainers/db/recordfieldmappings/value.value/expression.js
+++ b/entity/DSGVO_entity/recordcontainers/db/recordfieldmappings/value.value/expression.js
@@ -1,6 +1,6 @@
-import("system.vars");
+/*import("system.vars");
 import("system.result");
 import("DSGVO_lib");
 
 
-result.object(getDSGVOTable(vars.get("$param.currentPerson_param"), vars.get("$field.TABLENAME")));
\ No newline at end of file
+result.object(getDSGVOTable(vars.get("$param.currentPerson_param"), vars.get("$field.TABLENAME")));*/
\ No newline at end of file
diff --git a/entity/DSGVO_entity/recordcontainers/jdito/contentProcess.js b/entity/DSGVO_entity/recordcontainers/jdito/contentProcess.js
index 66df3fc69b5..8630527704c 100644
--- a/entity/DSGVO_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/DSGVO_entity/recordcontainers/jdito/contentProcess.js
@@ -9,9 +9,11 @@ var recordCond = SqlCondition.begin();
 
 recordCond.andPrepare("$param.currentPerson_param", "$field.CONTACT_ID");
 
-var dataQuery = recordCond.buildSql("select DSGVOID, ROW_ID, STATUORITYSOURCE, PURPOSE, TABLENAME, TYPE, VALID_TO, CONTACT_ID " +
-    "from DSGVO ", "1 = 1"); //, "order by DATE_NEW desc, USER_NEW asc");
+//var dataQuery = recordCond.buildSql("select DSGVOID, ROW_ID, STATUORITYSOURCE, PURPOSE, TABLENAME, TYPE, VALID_TO, CONTACT_ID " +
+//    "from DSGVO ", "1 = 1"); //, "order by DATE_NEW desc, USER_NEW asc");
     
+var dataQuery = recordCond.buildSql("select DSGVOID, ROW_ID, TABLENAME, TYPE from DSGVO ", "1 = 1");
+var res = _groupData(dataQuery);
 
 // res.push([dsgvoId, row, statSource, purpose, tablename, type, validTo, contactId]);
 // ---->>>> VALUE von RowId
@@ -28,39 +30,65 @@ function _groupData(pData)
     var res = [];
     var tableContainer = $KeywordRegistry.DSGVOTablename();
     
+    
     for (var i = 0; i < dataQuery.length; i++)
     {
+        var tableViewVal = KeywordUtils.getViewValue(tableContainer, pData[i][2]);
         var innerCond = SqlCondition.begin();
-        if(KeywordUtils.getViewValue(tableContainer, pData[i][4]) == "Adressen")
+        switch (tableViewVal)
         {
-            var addrData = innerCond.andPrepare(pData[i][1], "ADDRESSID")
-                    //.andPrepare(pData[i][7], "CONTACT_ID")
-                    .buildSql("select ADDRESSID, ADDRESS, ADDRESSADDITION, ADDRIDENTIFIER, "
+            case "Adressen":
+                var addrData = innerCond.andPrepare(pData[i][1], "ADDRESSID") // RowId
+                .buildSql("select ADDRESSID, ADDRESS, ADDRESSADDITION, ADDRIDENTIFIER, "
                     + "BUILDINGNO, CITY, COUNTRY, DISTRICT, REGION, STATE, ZIP "
                     + "from ADDRESS", "1 = 1");
-            if(addrData.length == 1)
+                if(addrData.length == 1)
                 {
                     // TODO welche Werte brauch ich? s.o.
-                    var value = (_formatAddrData(addrData[0]))
-                    res.push(pData[i][0], pData[i][1], pData[i][2], pData[i][3], pData[i][4], pData[i][5], value, pData[i][6], pData[i][7])
+                    var addrVal = (_formatAddrData(addrData[0]))
+                    res.push(["DSGVOID", pData[i][0]], ["ROW_ID", pData[i][1]], ["TABLENAME", pData[i][2]], ["TYPE", pData[i][3]], ["VALUE", addrVal]);
+                //res.push(pData[i][0], pData[i][1], pData[i][2], pData[i][3], pData[i][4], pData[i][5], value, pData[i][6], pData[i][7])
                     
+                }else
+                    continue;
+                break;
+            case "Kommunikationsdaten":
+                var comm = db.table(SqlCondition.begin()
+                    .andPrepare("CONTACT.PERSON_ID", pPerson)
+                    .buildSql("select COMMUNICATIONID, ADDR, MEDIUM_ID from COMMUNICATION join CONTACT on COMMUNICATION.CONTACT_ID = CONTACTID", "1 = 1"));
+                if(comm.length == 1)
+                {
+                    res.push(["DSGVOID", pData[i][0]], ["ROW_ID", pData[i][1]], ["TABLENAME", pData[i][2]], ["TYPE", pData[i][3]], ["VALUE", comm[1]]);
+                }
+                break;
+            case "Attribute":
+                break;
+            case "Persönliche Daten":
+                var pers = db.table(SqlCondition.begin()
+                    .andPrepare("PERSON.PERSONID", pPerson) //                      4                                    8   
+                    .buildSql("select PERSONID, DATEOFBIRTH, FIRSTNAME, MIDDLENAME, LASTNAME, GENDER, SALUTATION, TITLE, TITLESUFFIX, PICTURE from PERSON", "1 = 1"));
+                if(pers.length == 1)
+                {
+                    var typeContainer = $KeywordRegistry.DSGVOType();
+                    var typeViewVal = KeywordUtils.getViewValue(typeContainer, pData[i][3]);
+                    switch (typeViewVal)
+                    {
+                        case "Namen":
+                            var names = pers[6] + " " + pers[7] + " " + pers[8] + " " + pers[2] + " " + pers[3] + " " + pers[4];
+                            res.push(["DSGVOID", pData[i][0]], ["ROW_ID", pData[i][1]], ["TABLENAME", pData[i][2]], ["TYPE", pData[i][3]], ["VALUE", names]);
+                            break;
+                        case "sonstige Persönliche Daten":
+                            var otherPersData = pers[9] + pers[1] + ", " + pers[5];
+                            res.push(["DSGVOID", pData[i][0]], ["ROW_ID", pData[i][1]], ["TABLENAME", pData[i][2]], ["TYPE", pData[i][3]], ["VALUE", otherPersData]);
+                            break;
+                        default:
+                            continue;
+                    }
                 }
-            else
+                break;
+            default:
                 continue;
-                // return [];
-        }
-        else if(KeywordUtils.getViewValue(container, table) == "Kommunikationsdaten")
-        {
-            
-        }
-        else if(KeywordUtils.getViewValue(container, table) == "Attribute")
-        {
-                    
-        }
-        else if(KeywordUtils.getViewValue(container, table) == "Persönliche Daten")
-        {
-            
         }
-        return res;
     }
-}
+    return res;
+}
\ No newline at end of file
-- 
GitLab