From 52d5feb9186180da9604071a79b6d27a5391c86b Mon Sep 17 00:00:00 2001
From: "m.escher" <m.escher@adito.de>
Date: Tue, 4 Dec 2018 08:43:58 +0100
Subject: [PATCH] RecordContainer fix: Document_entity

---
 entity/Document_entity/Document_entity.aod    | 21 ++++++++++++++
 .../recordcontainers/jdito/contentProcess.js  | 29 +++++++++++++++++++
 .../recordcontainers/jdito/onDelete.js        |  2 ++
 .../recordcontainers/jdito/onInsert.js        | 17 +++++++++++
 .../recordcontainers/jdito/onUpdate.js        | 22 ++++++++++++++
 5 files changed, 91 insertions(+)
 create mode 100644 entity/Document_entity/recordcontainers/jdito/contentProcess.js
 create mode 100644 entity/Document_entity/recordcontainers/jdito/onDelete.js
 create mode 100644 entity/Document_entity/recordcontainers/jdito/onInsert.js
 create mode 100644 entity/Document_entity/recordcontainers/jdito/onUpdate.js

diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod
index 822c4ed01b..bad20a19fa 100644
--- a/entity/Document_entity/Document_entity.aod
+++ b/entity/Document_entity/Document_entity.aod
@@ -20,6 +20,7 @@
   <onInsert>%aditoprj%/entity/Document_entity/onInsert.js</onInsert>
   <onUpdate>%aditoprj%/entity/Document_entity/onUpdate.js</onUpdate>
   <onDelete>%aditoprj%/entity/Document_entity/onDelete.js</onDelete>
+  <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityIncomingField>
       <name>#INCOMING</name>
@@ -134,4 +135,24 @@
       <fieldName>KEYWORD</fieldName>
     </entityField>
   </entityFields>
+  <recordContainers>
+    <jDitoRecordContainer>
+      <name>jdito</name>
+      <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
+      <contentProcess>%aditoprj%/entity/Document_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
+      <onInsert>%aditoprj%/entity/Document_entity/recordcontainers/jdito/onInsert.js</onInsert>
+      <onUpdate>%aditoprj%/entity/Document_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
+      <onDelete>%aditoprj%/entity/Document_entity/recordcontainers/jdito/onDelete.js</onDelete>
+      <recordFields>
+        <element>ID.value</element>
+        <element>NAME.value</element>
+        <element>SIZE.value</element>
+        <element>DATE_EDIT.value</element>
+        <element>PREVIEW_IMAGE.value</element>
+        <element>TYPE.value</element>
+        <element>DESCRIPTION.value</element>
+        <element>KEYWORD.value</element>
+      </recordFields>
+    </jDitoRecordContainer>
+  </recordContainers>
 </entity>
diff --git a/entity/Document_entity/recordcontainers/jdito/contentProcess.js b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
new file mode 100644
index 0000000000..c676dbd27c
--- /dev/null
+++ b/entity/Document_entity/recordcontainers/jdito/contentProcess.js
@@ -0,0 +1,29 @@
+import("system.vars");
+import("system.result");
+import("system.db");
+
+// Check if assignment parameters are present
+if(vars.exists("$param.AssignmentTable_param") &&
+    vars.exists("$param.AssignmentName_param") &&
+    vars.exists("$param.AssignmentRowId_param")) {
+    var assignmentTable = vars.get("$param.AssignmentTable_param");
+    var assignmentName = vars.get("$param.AssignmentName_param");
+    var assignmentRowId = vars.get("$param.AssignmentRowId_param");
+    var alias = db.getCurrentAlias();
+    var documents = [];
+    
+    // Check if multiple Documents are selected
+    if(vars.exists("$local.idvalues") && vars.get("$local.idvalues") != '')
+        metadata = db.getBinaryMetadataForIds(vars.get("$local.idvalues"), true, alias)
+    else
+        metadata = db.getBinaryMetadata(assignmentTable, assignmentName, assignmentRowId, false, alias);    
+
+    // Iterate through found binary data and populate result array    
+    for( var i = 0; i < metadata.length; i++) {
+        documents.push( [metadata[i].id, metadata[i].filename, metadata[i].size, 
+            metadata[i].edit, metadata[i].preview, metadata[i].mimetype, 
+            metadata[i].description, metadata[i].keyword]);
+    }
+
+    result.object(documents);
+}
diff --git a/entity/Document_entity/recordcontainers/jdito/onDelete.js b/entity/Document_entity/recordcontainers/jdito/onDelete.js
new file mode 100644
index 0000000000..74fe702632
--- /dev/null
+++ b/entity/Document_entity/recordcontainers/jdito/onDelete.js
@@ -0,0 +1,2 @@
+import("Document_lib");
+DocumentUtil.deleteCurrentDocument();
diff --git a/entity/Document_entity/recordcontainers/jdito/onInsert.js b/entity/Document_entity/recordcontainers/jdito/onInsert.js
new file mode 100644
index 0000000000..6ca4ff7fcd
--- /dev/null
+++ b/entity/Document_entity/recordcontainers/jdito/onInsert.js
@@ -0,0 +1,17 @@
+import("system.db");
+import("system.vars");
+import("Document_lib");
+
+var assignmentTable = vars.get("$param.AssignmentTable_param");
+var assignmentName = vars.get("$param.AssignmentName_param");
+var assignmentRowId = vars.get("$param.AssignmentRowId_param");
+var bindata = DocumentUtil.getBindataFromUpload(vars.get("$field.BINDATA_UPLOAD"));
+var filename = vars.get("$field.NAME");
+var description = vars.get("$field.DESCRIPTION");
+var alias = db.getCurrentAlias();
+var keyword = vars.get("$field.KEYWORD");
+
+if(bindata != '' && filename != ''){
+    db.insertBinary(assignmentTable, assignmentName, assignmentRowId, "", 
+        bindata, filename, description, keyword, alias);
+}
diff --git a/entity/Document_entity/recordcontainers/jdito/onUpdate.js b/entity/Document_entity/recordcontainers/jdito/onUpdate.js
new file mode 100644
index 0000000000..9a1c27e56d
--- /dev/null
+++ b/entity/Document_entity/recordcontainers/jdito/onUpdate.js
@@ -0,0 +1,22 @@
+import("system.vars");
+import("system.db");
+import("Document_lib");
+
+var id = vars.get("$field.ID");
+var parentId = "";
+var fileName = vars.get("$field.NAME");
+var description = vars.get("$field.DESCRIPTION");
+var keyword = vars.get("$field.KEYWORD");
+var alias = db.getCurrentAlias();
+
+var bindata = DocumentUtil.getBindataFromUpload(vars.get("$field.BINDATA_UPLOAD"));
+
+if (bindata == ''){
+    bindata = vars.get("$field.BINDATA_UPLOAD")
+}
+
+// Check if bindata is present and execute the corresponding update method
+if(bindata != '')
+    db.updateBinary(id, parentId, bindata, fileName, description, keyword, alias);
+else
+    db.updateBinaryMetadata(id, parentId, fileName, description, keyword, alias);
\ No newline at end of file
-- 
GitLab