From c400e79059fc0a5d749105b7b981504080e076b2 Mon Sep 17 00:00:00 2001
From: "s.pongratz" <s.pongratz@adito.de>
Date: Wed, 23 Jun 2021 11:28:49 +0200
Subject: [PATCH] [Projekt: Entwicklung - Neon][TicketNr.:
 1082902][[Beobachtungen] verschiedene Bugfixes]

---
 .../entityfields/object_field/valueProcess.js |  4 ++-
 .../object_filter/valueProcess.js             |  8 +++---
 process/Observation_lib/process.js            | 25 +++++++++++--------
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/entity/Observation_entity/entityfields/object_field/valueProcess.js b/entity/Observation_entity/entityfields/object_field/valueProcess.js
index 99147fd1e3f..ba84c95e57d 100644
--- a/entity/Observation_entity/entityfields/object_field/valueProcess.js
+++ b/entity/Observation_entity/entityfields/object_field/valueProcess.js
@@ -4,4 +4,6 @@ import("system.result");
 import("system.neon");
 
 if (!vars.get("$this.value") && vars.get("$field.OBJECT_TYPE") && (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT))
-    result.string(Observation.getAllFieldValue(vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
+{
+    result.string(Observation.getAllFieldValue(vars.get("$field.OBJECT_TYPE")));
+}
diff --git a/entity/Observation_entity/entityfields/object_filter/valueProcess.js b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
index 4d4ffd95197..df026f7192e 100644
--- a/entity/Observation_entity/entityfields/object_filter/valueProcess.js
+++ b/entity/Observation_entity/entityfields/object_filter/valueProcess.js
@@ -3,16 +3,16 @@ import("Context_lib");
 import("system.vars");
 import("system.result");
 
-let isFilterParamExists = vars.exists("$param.ObjectFilter_param") && vars.get("$param.ObjectFilter_param");
+let filterParam = vars.get("$param.ObjectFilter_param");
 let resFilter;
 
-if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID") && !isFilterParamExists) 
+if ((vars.get("$this.value") == null || vars.get("$this.value") == "") && vars.get("$field.OBJECT_TYPE") && !vars.get("$field.OBJECT_ID") && !filterParam) 
 {
     resFilter = Observation.getContextFilter(vars.get("$field.OBJECT_TYPE"), null);
 }
-else if (!vars.get("$this.value") && isFilterParamExists) 
+else if (!vars.get("$this.value") && filterParam) 
 {
-    resFilter = vars.get("$param.ObjectFilter_param");
+    resFilter = filterParam;
 }
 
 if (resFilter)
diff --git a/process/Observation_lib/process.js b/process/Observation_lib/process.js
index 51e6bfcf7eb..469abca0373 100644
--- a/process/Observation_lib/process.js
+++ b/process/Observation_lib/process.js
@@ -192,7 +192,7 @@ Observation.prototype.checkFilterAndPermissions = function (pUserTitle, pFilterO
     // check if the observation has been alredy checkt
     if (this.storedFilterResults[storedIndex])
     {
-        return this.storedFilterResults[storedIndex];
+        return JSON.parse(this.storedFilterResults[storedIndex]);
     }
     
     try 
@@ -224,7 +224,7 @@ Observation.prototype.checkFilterAndPermissions = function (pUserTitle, pFilterO
         filterResult = null;
     }
     
-    this.storedFilterResults[storedIndex] = filterResult;
+    this.storedFilterResults[storedIndex] = JSON.stringify(filterResult);
     return filterResult
 }
 
@@ -241,7 +241,7 @@ Observation.prototype.parseAndFilterObjectFields = function (pObjectFields, pUse
     
     if (this.storedObservedFields[storedIndex])
     {
-        return this.storedObservedFields[storedIndex]
+        return JSON.parse(this.storedObservedFields[storedIndex]);
     }
     
     let observeFields = {};
@@ -260,7 +260,7 @@ Observation.prototype.parseAndFilterObjectFields = function (pObjectFields, pUse
         }
     }, this);
     
-    this.storedObservedFields[storedIndex] = observeFields;
+    this.storedObservedFields[storedIndex] = JSON.stringify(observeFields);
     return observeFields;
 }
 
@@ -285,7 +285,7 @@ Observation.prototype._checkDependencies = function (pObserver, pDependentContex
     var dependentCheckVars = {}
     dependentCheckVars[WorkflowVariables.TRIGGER()] = this.callerVariables[WorkflowVariables.TRIGGER()];
     dependentCheckVars[WorkflowVariables.TARGET_CONTEXT()] = pDependentContext;
-    dependentCheckVars[WorkflowVariables.EVENT_USER()] = pObserver;
+    dependentCheckVars[WorkflowVariables.EVENT_USER()] = this.callerVariables[WorkflowVariables.EVENT_USER()];
     
     Object.keys(pTempObserver[pObserver][Observation.RECORDS_SPECIFIC_VALUES()]).forEach(function (pRecordID) {
         let specificRecordValues = pTempObserver[pObserver][Observation.RECORDS_SPECIFIC_VALUES()][pRecordID];
@@ -322,7 +322,7 @@ Observation.prototype._formatFieldsToLoad =  function (pFilterResults)
     let res = {};
     let fieldsToLoad = this.callerVariables[WorkflowVariables.FIELDS_TO_LOAD()]
     
-    if (Array.isArray(fieldsToLoad))
+    if (Array.isArray(fieldsToLoad) && !Utils.isNullOrEmpty(fieldsToLoad))
     {
         let recordFields = {};
         let pro = project.getRecordContainerModel(this.callerVariables[Observation.ENTITY_NAME()])["recordFieldMappings"];
@@ -394,7 +394,7 @@ Observation.prototype.checkObservation = function(pObservationId)
             var filterResult;
             
             // exclude the user who made the changes. 
-            if (user)// && pVariables[WorkflowVariables.EVENT_USER()] !== observation[2])
+            if (user && this.callerVariables[WorkflowVariables.EVENT_USER()] !== user["name"])
             {
                 filterResult = this.checkFilterAndPermissions(user.title, observation[1], observation[0]);
             
@@ -405,6 +405,10 @@ Observation.prototype.checkObservation = function(pObservationId)
                         return filterResult;
                     }
                     
+                    if (Utils.isNullOrEmpty(observation[3]))
+                    {
+                        observation[3] = Observation.getAllFieldValue(this.callerVariables[WorkflowVariables.TARGET_CONTEXT()]);
+                    }
                     tempObserver[observation[2]] = this.parseAndFilterObjectFields(observation[3], user.title, filterResult);
                     tempObserver[observation[2]][Observation.RECORDS_SPECIFIC_VALUES()] = this._formatFieldsToLoad(filterResult);
                 }
@@ -448,8 +452,9 @@ Observation.prototype.checkObservation = function(pObservationId)
  */
 Observation._syncTempObservationAndObservation = function (pTempObserver, pObservers, pObserverUserID, pChangedRows) 
 {
-    if (pTempObserver[pObserverUserID] && (!Utils.isNullOrEmpty(pTempObserver[pObserverUserID][Observation.OBJECT_IDs()])))
-    {
+    if (pTempObserver[pObserverUserID] && (!pTempObserver[pObserverUserID][Observation.OBJECT_IDs()] ||
+        Object.keys(pTempObserver[pObserverUserID][Observation.OBJECT_IDs()]).length > 0))
+        {
         if (!pObservers[pObserverUserID])
         {
             pObservers[pObserverUserID] = pTempObserver[pObserverUserID];
@@ -613,7 +618,7 @@ Observation._notification = function (pVariables, pFilteredVariables, pObservers
     
     pFilteredVariables.notificationUser = pObserver;
     var isNewDescription = false;
-    if (pFilteredVariables != {}){
+    if (!Utils.isNullOrEmpty(pFilteredVariables)){
         var rowData = pVariables[WorkflowVariables.ROWDATA()];
         Object.keys(pObservers[pObserver]).forEach(function (field) {
             if (pVariables[WorkflowVariables.CHANGED_ROWS()].indexOf(field) > -1) 
-- 
GitLab