From b5d4c9a3a86961bef0c2c6b4ba39fe14cd960f70 Mon Sep 17 00:00:00 2001
From: edvbachg <gerhard.bachmaier@hama.de>
Date: Wed, 21 Oct 2020 07:24:56 +0200
Subject: [PATCH] =?UTF-8?q?1066030:=20Gebiet=20l=C3=B6schen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 aliasDefinition/Data_alias/Data_alias.aod     | 14 +++++++++++-
 .../translate4log/property.js                 | 22 +++++++++++++++++++
 .../translate4log/property.js                 | 21 +++++++++++-------
 entity/District_entity/District_entity.aod    |  3 +++
 entity/District_entity/grantDeleteProcess.js  | 16 ++++++++++++++
 .../recordcontainers/db/onDBDelete.js         | 16 ++++++++++++++
 6 files changed, 83 insertions(+), 9 deletions(-)
 create mode 100644 aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js
 create mode 100644 entity/District_entity/grantDeleteProcess.js
 create mode 100644 entity/District_entity/recordcontainers/db/onDBDelete.js

diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod
index de3b537eb9c..18edb1d547c 100644
--- a/aliasDefinition/Data_alias/Data_alias.aod
+++ b/aliasDefinition/Data_alias/Data_alias.aod
@@ -15891,8 +15891,20 @@
                 <isUnique v="false" />
                 <index v="false" />
                 <documentation></documentation>
-                <title></title>
+                <title>District</title>
                 <description></description>
+                <customProperties>
+                  <customBooleanProperty>
+                    <name>log</name>
+                    <global v="false" />
+                    <property v="true" />
+                  </customBooleanProperty>
+                  <customJDitoProperty>
+                    <name>translate4Log</name>
+                    <global v="false" />
+                    <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js</property>
+                  </customJDitoProperty>
+                </customProperties>
               </entityFieldDb>
               <entityFieldDb>
                 <name>CONTACT_ID</name>
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js
new file mode 100644
index 00000000000..1107fb8c489
--- /dev/null
+++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/district_id/customproperties/translate4log/property.js
@@ -0,0 +1,22 @@
+import("system.translate");
+import("Keyword_lib");
+import("KeywordRegistry_basic");
+import("District_lib");
+import("system.result");
+import("Loghistory_lib");
+import("Contact_lib");
+
+var params = Translate4LogParams.load();
+
+if (params.action == 'I')
+{
+    //Gebiet und Betreur umschlüsseln
+    var arrDistrictContact = DistrictUtils.getDataFromDistrictContact(params.rowId);
+    var districtName = DistrictUtils.getDistrictName(arrDistrictContact[0]);
+    var adviserName = ContactUtils.getTitleByContactId(arrDistrictContact[1]);
+    result.string(districtName + " (" + params.value + "); " + translate.text("Adviser") + ": " + adviserName);
+}
+else if (params.action == 'D')
+{
+    result.string(params.value);
+}
\ No newline at end of file
diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js
index c079c7fd800..2c298584241 100644
--- a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js
+++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/districtcontact/entityfields/status/customproperties/translate4log/property.js
@@ -8,12 +8,17 @@ import("Contact_lib");
 
 var params = Translate4LogParams.load();
 
-//Keyword umschlüsseln
-var keyname = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), params.value);
+//Statusänderung protokollieren
+if (params.action == 'U')
+{
+    //Keyword umschlüsseln
+    var keyname = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), params.value);
 
-//Gebiet und Betreur umschlüsseln
-var arrDistrictContact = DistrictUtils.getDataFromDistrictContact(params.rowId);
-var districtName = DistrictUtils.getDistrictName(arrDistrictContact[0]);
-var adviserName = ContactUtils.getFullTitleByContactId(arrDistrictContact[1])
-
-result.string(keyname + " (" + translate.text("District") + ": " + districtName + "; " + translate.text("Adviser") + ": " + adviserName + ")");
\ No newline at end of file
+    //Gebiet und Betreur umschlüsseln
+    var arrDistrictContact = DistrictUtils.getDataFromDistrictContact(params.rowId);
+    var districtName = DistrictUtils.getDistrictName(arrDistrictContact[0]);
+    //var adviserName = ContactUtils.getFullTitleByContactId(arrDistrictContact[1]);
+    var adviserName = ContactUtils.getTitleByContactId(arrDistrictContact[1]);
+    
+    result.string(keyname + " (" + translate.text("District") + ": " + districtName + "; " + translate.text("Adviser") + ": " + adviserName + ")");
+}
\ No newline at end of file
diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod
index e45c83db3f6..441b1d11b17 100644
--- a/entity/District_entity/District_entity.aod
+++ b/entity/District_entity/District_entity.aod
@@ -5,6 +5,8 @@
   <documentation>%aditoprj%/entity/District_entity/documentation.adoc</documentation>
   <icon>VAADIN:GLOBE</icon>
   <title>District definition</title>
+  <grantDelete v="false" />
+  <grantDeleteProcess>%aditoprj%/entity/District_entity/grantDeleteProcess.js</grantDeleteProcess>
   <contentTitleProcess>%aditoprj%/entity/District_entity/contentTitleProcess.js</contentTitleProcess>
   <iconIdProcess>%aditoprj%/entity/District_entity/iconIdProcess.js</iconIdProcess>
   <titlePlural></titlePlural>
@@ -282,6 +284,7 @@
       <isPageable v="false" />
       <conditionProcess>%aditoprj%/entity/District_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
       <orderClauseProcess>%aditoprj%/entity/District_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
+      <onDBDelete>%aditoprj%/entity/District_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
       <cacheType>GLOBAL</cacheType>
       <cacheKeyProcess>%aditoprj%/entity/District_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess>
       <linkInformation>
diff --git a/entity/District_entity/grantDeleteProcess.js b/entity/District_entity/grantDeleteProcess.js
new file mode 100644
index 00000000000..7522748ad5f
--- /dev/null
+++ b/entity/District_entity/grantDeleteProcess.js
@@ -0,0 +1,16 @@
+import("system.result");
+import("Sql_lib");
+import("system.vars");
+
+//Ist das zu löschende Gebiet ein übergeordnetes Gebiet, dann ist das Löschen nicht erlaubt.
+var districtId = vars.get("$field.DISTRICTID");
+var anzahl = newSelect("COUNT(*)")
+                    .from("DISTRICT")
+                    .where("DISTRICT.PARENTDISTRICT_DISTRICTID", districtId)
+                    .cell(true);   
+                                   
+if (anzahl > 0)
+    result.string(false);
+else
+    result.string(true);
+
diff --git a/entity/District_entity/recordcontainers/db/onDBDelete.js b/entity/District_entity/recordcontainers/db/onDBDelete.js
new file mode 100644
index 00000000000..20387d3b81f
--- /dev/null
+++ b/entity/District_entity/recordcontainers/db/onDBDelete.js
@@ -0,0 +1,16 @@
+import("Sql_lib");
+import("system.vars");
+import("system.db");
+
+var condition;
+var deleteArray = [];
+var districtId = vars.get("$field.DISTRICTID");
+
+//Gebiet wird gelöscht -> auch die Referenzen in den folgenden Tabellen löschen
+condition = newWhere("DISTRICTCONTACT.DISTRICT_ID", districtId);
+deleteArray.push(["DISTRICTCONTACT", condition.build()]);
+
+condition = newWhere("DISTRICTRESPONSIBLE.DISTRICT_ID", districtId);
+deleteArray.push(["DISTRICTRESPONSIBLE", condition.build()]);
+
+db.deletes(deleteArray);
\ No newline at end of file
-- 
GitLab