From ab4f3a4c9472aa03cd40c94357c5711222b94116 Mon Sep 17 00:00:00 2001
From: "j.goderbauer" <j.goderbauer@adito.de>
Date: Tue, 12 Mar 2019 16:04:20 +0100
Subject: [PATCH] AddressType filter by ContactType

---
 .../AddressType_entity/AddressType_entity.aod |  9 +++++++++
 .../recordcontainers/db/conditionProcess.js   | 17 +++++++++-------
 entity/Address_entity/Address_entity.aod      | 17 +++++++---------
 .../children/contacttype_param/code.js        |  4 +++-
 .../children/containername_param/code.js      |  5 -----
 .../children/usagefilter_param/code.js        | 20 +++++++++++++++++++
 .../children/contacttype_param/code.js        |  3 ++-
 .../children/contacttype_param/code.js        |  3 ++-
 .../KeywordEntry_entity.aod                   |  6 ------
 neonContext/AddressType/AddressType.aod       |  6 ++++++
 .../2019.2/AditoBasic/init_AddressType.xml    |  2 +-
 11 files changed, 60 insertions(+), 32 deletions(-)
 delete mode 100644 entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/code.js
 create mode 100644 entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/code.js
 create mode 100644 neonContext/AddressType/AddressType.aod

diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod
index 408cbcac8ec..e5a9df3fe0c 100644
--- a/entity/AddressType_entity/AddressType_entity.aod
+++ b/entity/AddressType_entity/AddressType_entity.aod
@@ -21,6 +21,14 @@
       <name>ByCategory</name>
       <fieldType>DEPENDENCY_IN</fieldType>
       <lookupIdfield>KEYID</lookupIdfield>
+      <dependencies>
+        <entityDependency>
+          <name>b6ddc934-51ac-43a5-8aa9-7239423ea14d</name>
+          <entityName>Address_entity</entityName>
+          <fieldName>KeywordAddressType</fieldName>
+          <isConsumer v="false" />
+        </entityDependency>
+      </dependencies>
       <children>
         <entityParameter>
           <name>usageFilter_param</name>
@@ -32,6 +40,7 @@
     <entityParameter>
       <name>usageFilter_param</name>
       <title></title>
+      <expose v="true" />
       <description>PARAMETER</description>
     </entityParameter>
   </entityFields>
diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
index f03f6d9a6ce..99de51563c2 100644
--- a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js
@@ -1,3 +1,4 @@
+import("system.db");
 import("system.vars");
 import("system.result");
 import("KeywordRegistry_basic");
@@ -11,12 +12,14 @@ var cond = SqlCondition.begin()
 var usageFilter = vars.get("$param.usageFilter_param");
 if (usageFilter)
 {
-    var keywordAttribute = KeywordAttribute($KeywordRegistry.addressType(), usageFilter);
-    
-    "AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID in (\n\
-        select AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID \n\
-        from AB_KEYWORD_ATTRIBUTERELATION " + SqlCondition.begin()
-                                                          .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", keywordAttribute.id)
-                                                          .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.VALUE_??", keywordAttribute.id)//should be generated automatically
+    var keywordAttribute = new KeywordAttribute($KeywordRegistry.addressType(), usageFilter);
+    cond.andAttachPrepared(SqlCondition.begin()
+                                       .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", keywordAttribute.id)
+                                       .andPrepare("AB_KEYWORD_ATTRIBUTERELATION." + keywordAttribute.dbField, "1")
+                                       .buildSql("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID in (\n\
+                                                    select AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID \n\
+                                                    from AB_KEYWORD_ATTRIBUTERELATION ", null, ")"));
 }
+
+cond = db.translateStatement(cond.build("1 = 2"));
 result.string(cond);
\ No newline at end of file
diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod
index 5abe042e6df..7690bb27f06 100644
--- a/entity/Address_entity/Address_entity.aod
+++ b/entity/Address_entity/Address_entity.aod
@@ -72,7 +72,6 @@
     <entityProvider>
       <name>OrganisationAddresses</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>b484b43c-16f6-4875-9787-f0813dd200cb</name>
@@ -85,7 +84,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <code>%aditoprj%/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/code.js</code>
-          <expose v="true" />
+          <expose v="false" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
         <entityParameter>
@@ -107,7 +106,6 @@
     <entityProvider>
       <name>ContactAddresses</name>
       <fieldType>DEPENDENCY_IN</fieldType>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name>
@@ -120,7 +118,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <code>%aditoprj%/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/code.js</code>
-          <expose v="true" />
+          <expose v="false" />
           <triggerRecalculation v="true" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
@@ -150,7 +148,6 @@
       <name>OrganisationAddressesByContact</name>
       <fieldType>DEPENDENCY_IN</fieldType>
       <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/documentation.adoc</documentation>
-      <recordContainer>db</recordContainer>
       <dependencies>
         <entityDependency>
           <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name>
@@ -163,7 +160,7 @@
         <entityParameter>
           <name>ContactType_param</name>
           <code>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/code.js</code>
-          <expose v="true" />
+          <expose v="false" />
           <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description>
         </entityParameter>
       </children>
@@ -193,13 +190,13 @@
       <fieldType>DEPENDENCY_OUT</fieldType>
       <dependency>
         <name>dependency</name>
-        <entityName>KeywordEntry_entity</entityName>
-        <fieldName>SpecificContainerKeywords</fieldName>
+        <entityName>AddressType_entity</entityName>
+        <fieldName>ByCategory</fieldName>
       </dependency>
       <children>
         <entityParameter>
-          <name>containerName_param</name>
-          <code>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/code.js</code>
+          <name>usageFilter_param</name>
+          <code>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/code.js</code>
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/code.js
index 805812e9e79..cfff5cf20d0 100644
--- a/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/code.js
+++ b/entity/Address_entity/entityfields/contactaddresses/children/contacttype_param/code.js
@@ -1,2 +1,4 @@
 import("system.result");
-result.object(2);
\ No newline at end of file
+import("Contact_lib");
+
+result.object(Contact.TYPES.Contact);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/code.js b/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/code.js
deleted file mode 100644
index 167d3dc35f3..00000000000
--- a/entity/Address_entity/entityfields/keywordaddresstype/children/containername_param/code.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import("system.result");
-import("Keyword_lib");
-import("KeywordRegistry_basic");
-
-result.string($KeywordRegistry.addressType());
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/code.js b/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/code.js
new file mode 100644
index 00000000000..efc47e64ed3
--- /dev/null
+++ b/entity/Address_entity/entityfields/keywordaddresstype/children/usagefilter_param/code.js
@@ -0,0 +1,20 @@
+import("system.logging");
+import("system.vars");
+import("system.result");
+import("Contact_lib");
+
+var keywordAttributeFilterName = "";
+var contactType = vars.get("$param.ContactType_param");
+
+switch (contactType) {
+    case Contact.TYPES.Contact:
+    case Contact.TYPES.Private:
+        keywordAttributeFilterName = "contact";
+        break;
+    case Contact.TYPES.Organisation:
+        keywordAttributeFilterName = "organisation";
+        break;
+}
+logging.log("contactType>>" + contactType);
+logging.log("keywordAttributeFilterName>>" + keywordAttributeFilterName);
+result.object(keywordAttributeFilterName);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/code.js b/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/code.js
index 85a095aeb8a..fde2b2a8d47 100644
--- a/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/code.js
+++ b/entity/Address_entity/entityfields/organisationaddresses/children/contacttype_param/code.js
@@ -1,3 +1,4 @@
 import("system.result");
+import("Contact_lib");
 
-result.object(1);
\ No newline at end of file
+result.object(Contact.TYPES.Organisation);
\ No newline at end of file
diff --git a/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/code.js b/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/code.js
index 85a095aeb8a..fde2b2a8d47 100644
--- a/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/code.js
+++ b/entity/Address_entity/entityfields/organisationaddressesbycontact/children/contacttype_param/code.js
@@ -1,3 +1,4 @@
 import("system.result");
+import("Contact_lib");
 
-result.object(1);
\ No newline at end of file
+result.object(Contact.TYPES.Organisation);
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
index de0bacc7b2c..b8e462c58ab 100644
--- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod
+++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod
@@ -270,12 +270,6 @@
           <fieldName>KeywordMedium</fieldName>
           <isConsumer v="false" />
         </entityDependency>
-        <entityDependency>
-          <name>2ed3c1ee-0cae-4017-aaf2-49bf4307abc4</name>
-          <entityName>Address_entity</entityName>
-          <fieldName>KeywordAddressType</fieldName>
-          <isConsumer v="false" />
-        </entityDependency>
         <entityDependency>
           <name>04b28ce6-a144-4c19-ac2d-4cfbc3568700</name>
           <entityName>Organisation_entity</entityName>
diff --git a/neonContext/AddressType/AddressType.aod b/neonContext/AddressType/AddressType.aod
new file mode 100644
index 00000000000..c0acbfc73bf
--- /dev/null
+++ b/neonContext/AddressType/AddressType.aod
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0">
+  <name>AddressType</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <entity>AddressType_entity</entity>
+</neonContext>
diff --git a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
index f5e48e9b9d2..365041d0512 100644
--- a/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
+++ b/others/db_changes/data_alias/basic/2019.2/AditoBasic/init_AddressType.xml
@@ -4,7 +4,7 @@
         <insert tableName="AB_KEYWORD_ATTRIBUTE">
             <column name="AB_KEYWORD_ATTRIBUTEID" value="1d5c5d49-0ffd-47fb-af10-542f7cf454cd"/>
 
-            <column name="NAME" value="organinsation"/>
+            <column name="NAME" value="organisation"/>
             <column name="CONTAINER" value="AddressType"/>
             <column name="TYPE" value="BOOL_VALUE"/>
         </insert>
-- 
GitLab