diff --git a/workflow/engine/classes/Cases.php b/workflow/engine/classes/Cases.php
index d935ba9b2..3f9738331 100644
--- a/workflow/engine/classes/Cases.php
+++ b/workflow/engine/classes/Cases.php
@@ -7514,5 +7514,183 @@ class Cases
$caseDataRow["USR_UID"] = $targetUserId;
$listInbox->create($caseDataRow);
}
+
+ /**
+ * Obtains the task information and the user delegated to the task for an specific case
+ *
+ * @param string $applicationUid
+ * @param string $processUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ * @throws Exception
+ *
+ */
+ public function getTasksInfoForACase($applicationUid, $processUid)
+ {
+ $conn = Propel::getConnection('workflow');
+
+ $sql = 'SELECT TASK.TAS_UID, TASK.TAS_TITLE, TASK.TAS_DESCRIPTION, TASK.TAS_START,
+ TASK.TAS_TYPE, TASK.TAS_DERIVATION, TASK.TAS_ASSIGN_TYPE, APP.USR_UID, USERS.USR_USERNAME,
+ USERS.USR_FIRSTNAME, USERS.USR_LASTNAME
+ FROM TASK LEFT JOIN (SELECT * FROM APP_DELEGATION WHERE APP_DELEGATION.APP_UID = ?) AS APP
+ ON TASK.TAS_UID = APP.TAS_UID LEFT JOIN USERS
+ ON (SELECT USR_UID FROM APP_DELEGATION WHERE APP_UID = ? AND TAS_UID = TASK.TAS_UID ORDER BY DEL_INDEX DESC LIMIT 1) = USERS.USR_UID
+ WHERE TASK.PRO_UID = ?';
+
+ $stmt = $conn->prepareStatement($sql);
+
+ $stmt->set(1, $applicationUid);
+ $stmt->set(2, $applicationUid);
+ $stmt->set(3, $processUid);
+
+ if (!$stmt->executeQuery()) {
+ throw Exception(G::LoadTranslation('ID_MSG_AJAX_FAILURE'));
+ }
+
+ return $stmt->getResultSet();
+ }
+
+ /**
+ * Get the task information when the task is a sub-process
+ *
+ * @param string $processUid
+ * @param string $tasUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ */
+ public function getTaskInfoForSubProcess($processUid, $tasUid)
+ {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addSelectColumn(SubProcessPeer::PRO_UID);
+ $criteria->addSelectColumn(TaskPeer::TAS_TITLE);
+ $criteria->addSelectColumn(TaskPeer::TAS_DESCRIPTION);
+ $criteria->addJoin(SubProcessPeer::TAS_PARENT, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
+ $criteria->add(SubProcessPeer::PRO_PARENT, $processUid);
+ $criteria->add(SubProcessPeer::TAS_PARENT, $tasUid);
+
+ $rsCriteria = SubProcessPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ return $rsCriteria;
+ }
+
+ /**
+ * Get the routes of a task
+ *
+ * @param string $processUid
+ * @param string $tasUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ */
+ public function getTaskRoutes($processUid, $tasUid)
+ {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addAsColumn("ROU_NUMBER", RoutePeer::ROU_CASE);
+ $criteria->addSelectColumn(RoutePeer::ROU_TYPE);
+ $criteria->addSelectColumn(RoutePeer::ROU_CONDITION);
+ $criteria->addAsColumn("TAS_UID", RoutePeer::ROU_NEXT_TASK);
+ $criteria->add(RoutePeer::PRO_UID, $processUid, Criteria::EQUAL);
+ $criteria->add(RoutePeer::TAS_UID, $tasUid, Criteria::EQUAL);
+ $criteria->addAscendingOrderByColumn("ROU_NUMBER");
+
+ $rsCriteria = RoutePeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ return $rsCriteria;
+ }
+
+ /**
+ * Get the delegations of an specific case
+ *
+ * @param string $applicationUid
+ * @param string $tasUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ */
+ public function getCaseDelegations($applicationUid, $tasUid)
+ {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX);
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_DELEGATE_DATE);
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE);
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_TASK_DUE_DATE);
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
+ $criteria->addSelectColumn(UsersPeer::USR_UID);
+ $criteria->addSelectColumn(UsersPeer::USR_USERNAME);
+ $criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
+ $criteria->addSelectColumn(UsersPeer::USR_LASTNAME);
+
+ $criteria->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
+
+ $criteria->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
+ $criteria->add(AppDelegationPeer::TAS_UID, $tasUid, Criteria::EQUAL);
+ $criteria->addAscendingOrderByColumn(AppDelegationPeer::DEL_INDEX);
+
+ $rsCriteria = AppDelegationPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ return $rsCriteria;
+ }
+
+ /**
+ * Get the total amount and the minimun date of the Delegation table for an specific case
+ *
+ * @param string $applicationUid
+ * @param string $tasUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ */
+ public function getTotalAndMinDateForACase($applicationUid, $tasUid)
+ {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addAsColumn("CANT", "COUNT(" . AppDelegationPeer::APP_UID . ")");
+ $criteria->addAsColumn("FINISH", "MIN(" . AppDelegationPeer::DEL_FINISH_DATE . ")");
+ $criteria->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
+ $criteria->add(AppDelegationPeer::TAS_UID, $tasUid, Criteria::EQUAL);
+
+ $rsCriteria = AppDelegationPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ return $rsCriteria;
+ }
+
+ /**
+ * Get the DEL_FINISH_DATE of the Delegation table of an specific task in a case
+ *
+ * @param string $applicationUid
+ * @param string $tasUid
+ *
+ * @see /workflow/engine/src/ProcessMaker/BusinessModel/Cases::getTasks($applicationUid)
+ *
+ * @return ResultSet
+ */
+ public function getDelegationFinishDate($applicationUid, $tasUid)
+ {
+ $criteria = new Criteria("workflow");
+
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
+ $criteria->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
+ $criteria->add(AppDelegationPeer::TAS_UID, $tasUid, Criteria::EQUAL);
+ $criteria->add(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL);
+
+ $rsCriteria = AppDelegationPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ return $rsCriteria;
+ }
}
diff --git a/workflow/engine/content/translations/english/processmaker.en.po b/workflow/engine/content/translations/english/processmaker.en.po
index da8a87367..e02e82ea0 100644
--- a/workflow/engine/content/translations/english/processmaker.en.po
+++ b/workflow/engine/content/translations/english/processmaker.en.po
@@ -15179,6 +15179,12 @@ msgstr "Screenshot640"
msgid "The input document is required, please select the value."
msgstr "The input document is required, please select the value."
+# TRANSLATION
+# LABEL/ID_MAFE_99567b953da8beace4e3e7296bf1fc23
+#: LABEL/ID_MAFE_99567b953da8beace4e3e7296bf1fc23
+msgid "Assign type"
+msgstr "Assign type"
+
# TRANSLATION
# LABEL/ID_MAFE_99b2439e63f73ad515f7ab2447a80673
#: LABEL/ID_MAFE_99b2439e63f73ad515f7ab2447a80673
@@ -15557,6 +15563,12 @@ msgstr "Ok"
msgid "Notify the assigned user to this task"
msgstr "Notify the assigned user to this task"
+# TRANSLATION
+# LABEL/ID_MAFE_a6122a65eaa676f700ae68d393054a37
+#: LABEL/ID_MAFE_a6122a65eaa676f700ae68d393054a37
+msgid "Start"
+msgstr "Start"
+
# TRANSLATION
# LABEL/ID_MAFE_a6527af0da63377b07a3effae750a485
#: LABEL/ID_MAFE_a6527af0da63377b07a3effae750a485
@@ -16379,6 +16391,12 @@ msgstr "Invalid Connection between elements"
msgid "Invalid operation: Delete message flow before converting it to"
msgstr "Invalid operation: Delete message flow before converting it to"
+# TRANSLATION
+# LABEL/ID_MAFE_c5e54f7804fa817826dfa5ecc13cd92f
+#: LABEL/ID_MAFE_c5e54f7804fa817826dfa5ecc13cd92f
+msgid "Last User Name"
+msgstr "Last User Name"
+
# TRANSLATION
# LABEL/ID_MAFE_c5f93fd19468533ea5c9114801c2958d
#: LABEL/ID_MAFE_c5f93fd19468533ea5c9114801c2958d
@@ -17231,6 +17249,12 @@ msgstr "Select a Control"
msgid "Please configure script to wait for a signal."
msgstr "Please configure script to wait for a signal."
+# TRANSLATION
+# LABEL/ID_MAFE_e2ac1703ae8a4bb8b146f7337a7e4cab
+#: LABEL/ID_MAFE_e2ac1703ae8a4bb8b146f7337a7e4cab
+msgid "Last User"
+msgstr "Last User"
+
# TRANSLATION
# LABEL/ID_MAFE_e2b9d6eb9f3ec7d4e6089274a4481fab
#: LABEL/ID_MAFE_e2b9d6eb9f3ec7d4e6089274a4481fab
@@ -17711,6 +17735,12 @@ msgstr "Assignment"
msgid "EXCLUSIVE"
msgstr "EXCLUSIVE"
+# TRANSLATION
+# LABEL/ID_MAFE_f45fabda0c6a595f709b3996398132f5
+#: LABEL/ID_MAFE_f45fabda0c6a595f709b3996398132f5
+msgid "Diverging gateways expect to receive only one incoming flow."
+msgstr "Diverging gateways expect to receive only one incoming flow."
+
# TRANSLATION
# LABEL/ID_MAFE_f4636507ca93332f92f92fb219a43b02
#: LABEL/ID_MAFE_f4636507ca93332f92f92fb219a43b02
diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql
index 512c573c1..aff0eabd9 100644
--- a/workflow/engine/data/mysql/insert.sql
+++ b/workflow/engine/data/mysql/insert.sql
@@ -59383,6 +59383,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_MAFE_9925fd3c9d09e862da22c5d6912420d9','en','End event must have an incoming sequence flow', NOW()) ,
( 'LABEL','ID_MAFE_992d1d47106d77216cd6c3a15415dbea','en','Screenshot640', NOW()) ,
( 'LABEL','ID_MAFE_99493c187e709deb387b6ee3ec6c8179','en','The input document is required, please select the value.', NOW()) ,
+( 'LABEL','ID_MAFE_99567b953da8beace4e3e7296bf1fc23','en','Assign type', NOW()) ,
( 'LABEL','ID_MAFE_99b2439e63f73ad515f7ab2447a80673','en','PAUSED', NOW()) ,
( 'LABEL','ID_MAFE_99c293babcada00063dd86b4f53bccd7','en','Variable sent in email', NOW()) ,
( 'LABEL','ID_MAFE_9a0364b9e99bb480dd25e1f0284c8555','en','content', NOW()) ,
@@ -59448,6 +59449,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_MAFE_a603905470e2a5b8c13e96b579ef0dba','en','Debug', NOW()) ,
( 'LABEL','ID_MAFE_a60852f204ed8028c1c58808b746d115','en','Ok', NOW()) ,
( 'LABEL','ID_MAFE_a60cf2ece5b3e294aa794916477ac6a8','en','Notify the assigned user to this task', NOW()) ,
+( 'LABEL','ID_MAFE_a6122a65eaa676f700ae68d393054a37','en','Start', NOW()) ,
( 'LABEL','ID_MAFE_a6527af0da63377b07a3effae750a485','en','
Triggers: Create scripts.', NOW()) ,
( 'LABEL','ID_MAFE_a6c0580005d36b8ad4194b3b31cdb9ee','en','Input Document deleted successfully', NOW()) ,
( 'LABEL','ID_MAFE_a6ca4597da3795aed1b1fa92f0e8d9a6','en','Previous Decade', NOW()) ,
@@ -59589,6 +59591,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_MAFE_c53385d51221bcb27c5f37de31043c24','en','No Category', NOW()) ,
( 'LABEL','ID_MAFE_c5bcf625cbb751aba886be634ef4ef47','en','Invalid Connection between elements', NOW()) ,
( 'LABEL','ID_MAFE_c5d84b6c19cb058b7b5471b30e926823','en','Invalid operation: Delete message flow before converting it to', NOW()) ,
+( 'LABEL','ID_MAFE_c5e54f7804fa817826dfa5ecc13cd92f','en','Last User Name', NOW()) ,
( 'LABEL','ID_MAFE_c5f93fd19468533ea5c9114801c2958d','en','Input Document updated successfully', NOW()) ,
( 'LABEL','ID_MAFE_c61404957758dfda283709e89376ab3e','en','layout', NOW()) ,
( 'LABEL','ID_MAFE_c61dee25881b22ead46aca2bc70f0f9d','en','Assigned supervisors list', NOW()) ,
@@ -59733,6 +59736,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_MAFE_e2627d9094274c7bcdc01ce1dadbaaab','en','Select Target Process', NOW()) ,
( 'LABEL','ID_MAFE_e29d57981d438d31f08b968bb12ed568','en','Select a Control', NOW()) ,
( 'LABEL','ID_MAFE_e2a990c9958b0fd2ecb860335737c258','en','Please configure script to wait for a signal.', NOW()) ,
+( 'LABEL','ID_MAFE_e2ac1703ae8a4bb8b146f7337a7e4cab','en','Last User', NOW()) ,
( 'LABEL','ID_MAFE_e2b9d6eb9f3ec7d4e6089274a4481fab','en','There are problems getting the list of DynaForms, please try again.', NOW()) ,
( 'LABEL','ID_MAFE_e30f555e5a24f076a5d5be70a4625270','en','TNS', NOW()) ,
( 'LABEL','ID_MAFE_e3ce9b91bd7b1be415b5e687006ad179','en','false: No default selection
true: current date
year: the first day of the current year
month: the first day of the month
day: the current day
hour: the current hour without minutes
minute: the current minute', NOW()) ,
@@ -59815,6 +59819,7 @@ INSERT INTO TRANSLATION (TRN_CATEGORY,TRN_ID,TRN_LANG,TRN_VALUE,TRN_UPDATE_DATE
( 'LABEL','ID_MAFE_f3a29486bed19a90f2da6d007818b427','en','Steps', NOW()) ,
( 'LABEL','ID_MAFE_f3b92fc0f97f128818cfb44321376bca','en','Assignment', NOW()) ,
( 'LABEL','ID_MAFE_f45c3a0bb3687ed8e221253b3fd4a2ce','en','EXCLUSIVE', NOW()) ,
+( 'LABEL','ID_MAFE_f45fabda0c6a595f709b3996398132f5','en','Diverging gateways expect to receive only one incoming flow.', NOW()) ,
( 'LABEL','ID_MAFE_f4636507ca93332f92f92fb219a43b02','en','Database Connection', NOW()) ,
( 'LABEL','ID_MAFE_f49b52022300199128ed01380edda751','en','There are problems updating the Timer Event, please try again.', NOW()) ,
( 'LABEL','ID_MAFE_f4ae7ce97eda9edfe1541b3fdea115b6','en','Group or User', NOW()) ,
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
index 799e086ae..4532b0f69 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
@@ -2128,6 +2128,11 @@ class Cases
*
* @param string $applicationUid Unique id of Case
*
+ * @see workflow/engine/src/ProcessMaker/Services/Api/Cases.php
+ * @see workflow/engine/src/ProcessMaker/Services/Api/Light.php
+ *
+ * @link https://wiki.processmaker.com/3.3/REST_API_Cases/Cases#Get_Case.27s_Tasks:_GET_.2Fcases.2F.7Bapp_uid.7D.2Ftasks
+ *
* @return array Return an array with all Tasks of Case
* @throws Exception
*/
@@ -2151,33 +2156,20 @@ class Cases
$taskUid = "";
- //Get data
- //SQL
- $delimiter = DBAdapter::getStringDelimiter();
+ //Obtain the list of tasks and their respectives users assigned to each one for an specific case
+ $case = new ClassesCases();
+ $rsTasks = $case->getTasksInfoForACase($applicationUid, $processUid);
- $criteria = new Criteria("workflow");
+ while ($rsTasks->next()) {
+ $row = $rsTasks->getRow();
- $criteria->addSelectColumn(TaskPeer::TAS_UID);
- $criteria->addSelectColumn(TaskPeer::TAS_TITLE);
- $criteria->addSelectColumn(TaskPeer::TAS_DESCRIPTION);
- $criteria->addSelectColumn(TaskPeer::TAS_START);
- $criteria->addSelectColumn(TaskPeer::TAS_TYPE);
- $criteria->addSelectColumn(TaskPeer::TAS_DERIVATION);
- $criteria->addSelectColumn(TaskPeer::TAS_ASSIGN_TYPE);
- $criteria->addSelectColumn(UsersPeer::USR_UID);
- $criteria->addSelectColumn(UsersPeer::USR_USERNAME);
- $criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
- $criteria->addSelectColumn(UsersPeer::USR_LASTNAME);
-
- $criteria->addJoin(TaskPeer::TAS_LAST_ASSIGNED, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
-
- $criteria->add(TaskPeer::PRO_UID, $processUid, Criteria::EQUAL);
-
- $rsCriteria = TaskPeer::doSelectRS($criteria);
- $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
-
- while ($rsCriteria->next()) {
- $row = $rsCriteria->getRow();
+ //If the task is a multiple task
+ if ($row["TAS_ASSIGN_TYPE"] == 'MULTIPLE_INSTANCE' || $row["TAS_ASSIGN_TYPE"] == 'MULTIPLE_INSTANCE_VALUE_BASED') {
+ $row["USR_UID"] = "";
+ $row["USR_USERNAME"] = "";
+ $row["USR_FIRSTNAME"] = "";
+ $row["USR_LASTNAME"] = "";
+ }
//Task
if ($row["TAS_TYPE"] == "NORMAL") {
@@ -2189,17 +2181,9 @@ class Cases
$row["TAS_TITLE"] = $task->getTasTitle();
}
} else {
- $criteria2 = new Criteria("workflow");
- $criteria2->addSelectColumn(SubProcessPeer::PRO_UID);
- $criteria2->addSelectColumn(TaskPeer::TAS_TITLE);
- $criteria2->addSelectColumn(TaskPeer::TAS_DESCRIPTION);
- $criteria2->addJoin(SubProcessPeer::TAS_PARENT, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
- $criteria2->add(SubProcessPeer::PRO_PARENT, $processUid);
- $criteria2->add(SubProcessPeer::TAS_PARENT, $row["TAS_UID"]);
-
- $rsCriteria2 = SubProcessPeer::doSelectRS($criteria2);
- $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ //Get the task information when the task type is different from normal
+ $rsCriteria2 = $case->getTaskInfoForSubProcess($processUid, $row["TAS_UID"]);
$rsCriteria2->next();
@@ -2215,18 +2199,8 @@ class Cases
$routeType = "";
$arrayRoute = array();
- $criteria2 = new Criteria("workflow");
-
- $criteria2->addAsColumn("ROU_NUMBER", RoutePeer::ROU_CASE);
- $criteria2->addSelectColumn(RoutePeer::ROU_TYPE);
- $criteria2->addSelectColumn(RoutePeer::ROU_CONDITION);
- $criteria2->addAsColumn("TAS_UID", RoutePeer::ROU_NEXT_TASK);
- $criteria2->add(RoutePeer::PRO_UID, $processUid, Criteria::EQUAL);
- $criteria2->add(RoutePeer::TAS_UID, $row["TAS_UID"], Criteria::EQUAL);
- $criteria2->addAscendingOrderByColumn("ROU_NUMBER");
-
- $rsCriteria2 = RoutePeer::doSelectRS($criteria2);
- $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ //Get the routes of a task
+ $rsCriteria2 = $case->getTaskRoutes($processUid, $row["TAS_UID"]);
while ($rsCriteria2->next()) {
$row2 = $rsCriteria2->getRow();
@@ -2243,25 +2217,7 @@ class Cases
//Delegations
$arrayAppDelegation = array();
- $criteria2 = new Criteria("workflow");
-
- $criteria2->addSelectColumn(AppDelegationPeer::DEL_INDEX);
- $criteria2->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE);
- $criteria2->addSelectColumn(AppDelegationPeer::DEL_TASK_DUE_DATE);
- $criteria2->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
- $criteria2->addSelectColumn(UsersPeer::USR_UID);
- $criteria2->addSelectColumn(UsersPeer::USR_USERNAME);
- $criteria2->addSelectColumn(UsersPeer::USR_FIRSTNAME);
- $criteria2->addSelectColumn(UsersPeer::USR_LASTNAME);
-
- $criteria2->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
-
- $criteria2->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
- $criteria2->add(AppDelegationPeer::TAS_UID, $row["TAS_UID"], Criteria::EQUAL);
- $criteria2->addAscendingOrderByColumn(AppDelegationPeer::DEL_INDEX);
-
- $rsCriteria2 = AppDelegationPeer::doSelectRS($criteria2);
- $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $rsCriteria2 = $case->getCaseDelegations($applicationUid, $row["TAS_UID"]);
while ($rsCriteria2->next()) {
$row2 = $rsCriteria2->getRow();
@@ -2292,8 +2248,10 @@ class Cases
$appDelegationDuration = G::LoadTranslation("ID_NOT_FINISHED");
- if (!empty($row2["DEL_FINISH_DATE"]) && !empty($row2["DEL_INIT_DATE"])) {
- $t = strtotime($row2["DEL_FINISH_DATE"]) - strtotime($row2["DEL_INIT_DATE"]);
+ $date = empty($row2["DEL_INIT_DATE"]) ? $row2["DEL_DELEGATE_DATE"] : $row2["DEL_INIT_DATE"];
+
+ if (!empty($row2["DEL_FINISH_DATE"]) && !empty($date)) {
+ $t = strtotime($row2["DEL_FINISH_DATE"]) - strtotime($date);
$h = $t * (1 / 60) * (1 / 60);
$m = ($h - (int)($h)) * (60 / 1);
@@ -2314,40 +2272,22 @@ class Cases
$this->getFieldNameByFormatFieldName("DEL_FINISH_DATE") => $arrayAppDelegationDate["DEL_FINISH_DATE"]["dateFormated"],
$this->getFieldNameByFormatFieldName("DEL_DURATION") => $appDelegationDuration,
$this->getFieldNameByFormatFieldName("USR_UID") => $row2["USR_UID"],
- $this->getFieldNameByFormatFieldName("USR_USERNAME") => $row2["USR_USERNAME"] . "",
- $this->getFieldNameByFormatFieldName("USR_FIRSTNAME") => $row2["USR_FIRSTNAME"] . "",
- $this->getFieldNameByFormatFieldName("USR_LASTNAME") => $row2["USR_LASTNAME"] . ""
+ $this->getFieldNameByFormatFieldName("USR_USERNAME") => $row2["USR_USERNAME"],
+ $this->getFieldNameByFormatFieldName("USR_FIRSTNAME") => $row2["USR_FIRSTNAME"],
+ $this->getFieldNameByFormatFieldName("USR_LASTNAME") => $row2["USR_LASTNAME"]
);
}
//Status
$status = "";
- //$criteria2
- $criteria2 = new Criteria("workflow");
-
- $criteria2->addAsColumn("CANT", "COUNT(" . AppDelegationPeer::APP_UID . ")");
- $criteria2->addAsColumn("FINISH", "MIN(" . AppDelegationPeer::DEL_FINISH_DATE . ")");
- $criteria2->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
- $criteria2->add(AppDelegationPeer::TAS_UID, $row["TAS_UID"], Criteria::EQUAL);
-
- $rsCriteria2 = AppDelegationPeer::doSelectRS($criteria2);
- $rsCriteria2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $rsCriteria2 = $case->getTotalAndMinDateForACase($applicationUid, $row["TAS_UID"]);
$rsCriteria2->next();
$row2 = $rsCriteria2->getRow();
- //$criteria3
- $criteria3 = new Criteria("workflow");
-
- $criteria3->addSelectColumn(AppDelegationPeer::DEL_FINISH_DATE);
- $criteria3->add(AppDelegationPeer::APP_UID, $applicationUid, Criteria::EQUAL);
- $criteria3->add(AppDelegationPeer::TAS_UID, $row["TAS_UID"], Criteria::EQUAL);
- $criteria3->add(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL);
-
- $rsCriteria3 = AppDelegationPeer::doSelectRS($criteria3);
- $rsCriteria3->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $rsCriteria3 = $case->getDelegationFinishDate($applicationUid, $row["TAS_UID"]);
$rsCriteria3->next();
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessMap.php b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessMap.php
index 068e795ef..ae0f84d5d 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessMap.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessMap.php
@@ -117,7 +117,7 @@ class ProcessMap
$tmpData[5] = "";
$tmpData[6] = $lanes['lan_name'];
$tmpData[7] = "";
- $tmpData[8] = $lanes['lan_uid'];
+ $tmpData[8] = array_key_exists('lan_uid', $lanes) ? $lanes['lan_uid']: "";
$tmpData[9] = "";
$tmpData[10] = $lanes['bou_container'];
@@ -719,7 +719,7 @@ class ProcessMap
if($element['bou_container'] != "bpmnDiagram"){
$resRec = $this->getNewPoints($element['bou_element'],$element['bou_container']);
}
- if($element['lns_uid'] == $idElement || $element['lan_uid'] == $idElement){
+ if ($element['lns_uid'] == $idElement || (array_key_exists('lan_uid', $element) ? $element['lan_uid'] == $idElement : false)) {
$result = array($element['bou_x'] + $resRec[0],$element['bou_y'] + $resRec[1]);
}
}