/** * Returns a list of all activities that can be reassigned * @param $api * @param $args * @return array * @throws SugarApiExceptionNotAuthorized * @throws SugarQueryException */ public function getReassignFlows($api, $args) { $this->checkACL($api, $args); $result = array('success' => true); // This is set to -1 because this API is not considering the max_num or // offset values and always will return all occurrences $result['next_offset'] = -1; $bpmFlow = BeanFactory::retrieveBean('pmse_BpmFlow'); $queryOptions = array('add_deleted' => !isset($options['add_deleted']) || $options['add_deleted'] ? true : false); if ($queryOptions['add_deleted'] == false) { $options['select'][] = 'deleted'; } $q = new SugarQuery(); $q->from($bpmFlow, $queryOptions); $q->distinct(false); $fields = array('cas_id', 'cas_index', 'cas_task_start_date', 'cas_delegate_date', 'cas_flow_status', 'cas_user_id', 'cas_due_date', 'bpmn_id'); $q->where()->equals('cas_flow_status', 'FORM'); if (!empty($args['record'])) { $q->where()->equals('cas_id', $args['record']); } //INNER JOIN BPMN ACTIVITY $q->joinTable('pmse_bpmn_activity', array('alias' => 'activity', 'joinType' => 'INNER', 'linkingTable' => true))->on()->equalsField('activity.id', 'bpmn_id')->equals('activity.deleted', 0); $fields[] = array("activity.name", 'act_name'); //INNSER JOIN BPMN ACTIVITY DEFINTION $q->joinTable('pmse_bpm_activity_definition', array('alias' => 'activity_definition', 'joinType' => 'INNER', 'linkingTable' => true))->on()->equalsField('activity_definition.id', 'activity.id')->equals('activity_definition.deleted', 0); $fields[] = array("activity_definition.act_assignment_method", 'act_assignment_method'); $fields[] = array("activity_definition.act_expected_time", 'act_expected_time'); $q->select($fields); $rows = $q->execute(); foreach ($rows as $key => $row) { //Expected time section $casData = new stdClass(); $casData->cas_task_start_date = $row['cas_task_start_date']; $casData->cas_delegate_date = $row['cas_delegate_date']; $expectedTime = !empty($row['act_expected_time']) ? json_decode(base64_decode($row['act_expected_time'])) : ''; $dueDate = !empty($expectedTime) && !empty($expectedTime->time) ? PMSEEngineUtils::processExpectedTime($expectedTime, $casData) : ''; $expectedTime = PMSEEngineUtils::getExpectedTimeLabel($expectedTime); $rows[$key]['cas_expected_time'] = $expectedTime; $delegateDate = $rows[$key]['cas_delegate_date']; $rows[$key]['cas_delegate_date'] = !empty($delegateDate) ? PMSEEngineUtils::getDateToFE($delegateDate, 'datetime') : ''; $rows[$key]['cas_due_date'] = !empty($dueDate) ? PMSEEngineUtils::getDateToFE($dueDate->format('Y-m-d H:i:s'), 'datetime') : ''; //User section $user = BeanFactory::getBean("Users", $row["cas_user_id"]); $rows[$key]['assigned_user'] = $user->full_name; if (isset($args['unattended']) && !empty($args['unattended'])) { if (!($user->status != 'Active' || $user->employee_status != 'Active')) { unset($rows[$key]); } } } if (!empty($args['q'])) { foreach ($rows as $key => $row) { if (strstr(strtolower($row['assigned_user']), strtolower($args['q']))) { $rowsLoad = $rows; } } $rows = $rowsLoad; } $rows = array_values($rows); $result['records'] = $rows; return $result; }