diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php index 05e652dec..b1ddc8f05 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php @@ -1098,10 +1098,12 @@ class AbstractCases implements CasesInterface * * @param string $pendingJson * @param bool $onlyTask + * @param string $statusThread + * @param string $dateToCompare * * @return int */ - public function prepareTaskPending($pendingJson, $onlyTask = true) + public function prepareTaskPending($pendingJson, $onlyTask = true, $statusThread = '', $dateToCompare = '') { $taskPending = json_decode($pendingJson, true); $result = []; @@ -1118,9 +1120,11 @@ class AbstractCases implements CasesInterface } if ($key === 'due_date') { $threadTasks[$i][$key] = $row; - $threadTasks[$i]['delay'] = getDiffBetweenDates($row, date("Y-m-d H:i:s")); + // Get the end date for calculate the delay + $endDate = ($dateToCompare !== 'now') ? $endDate = $dateToCompare : date("Y-m-d H:i:s"); + $threadTasks[$i]['delay'] = getDiffBetweenDates($row, $endDate); // Get task color label - $threadTasks[$i]['tas_color'] = (!empty($row)) ? $this->getTaskColor($row) : ''; + $threadTasks[$i]['tas_color'] = (!empty($row)) ? $this->getTaskColor($row, $statusThread, $dateToCompare) : ''; $threadTasks[$i]['tas_color_label'] = (!empty($row)) ? self::TASK_COLORS[$threadTasks[$i]['tas_color']] : ''; $threadTasks[$i]['tas_status'] = self::TASK_STATUS[$threadTasks[$i]['tas_color']]; } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php index 390e74a13..85abbff0d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Search.php @@ -181,12 +181,13 @@ class Search extends AbstractCases // Calculate duration $startDate = (string)$item['APP_CREATE_DATE']; $endDate = !empty($item['APP_FINISH_DATE']) ? $item['APP_FINISH_DATE'] : date("Y-m-d H:i:s"); + $dateToCompare = !empty($item['APP_FINISH_DATE']) ? $item['APP_FINISH_DATE'] : 'now'; $item['DURATION'] = getDiffBetweenDates($startDate, $endDate); // Get total case notes $item['CASE_NOTES_COUNT'] = AppNotes::total($item['APP_NUMBER']); // Get the detail related to the open thread if (!empty($item['THREADS'])) { - $result = $this->prepareTaskPending($item['THREADS'], false); + $result = $this->prepareTaskPending($item['THREADS'], false, $item['APP_STATUS'], $dateToCompare); $item['THREAD_TASKS'] = !empty($result['THREAD_TASKS']) ? $result['THREAD_TASKS'] : []; $item['THREAD_USERS'] = !empty($result['THREAD_USERS']) ? $result['THREAD_USERS'] : []; $item['THREAD_TITLES'] = !empty($result['THREAD_TITLES']) ? $result['THREAD_TITLES'] : [];