예제 #1
0
 /**
  * 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;
 }