300 lines
11 KiB
PHP
300 lines
11 KiB
PHP
<?php
|
|
|
|
namespace ProcessMaker\BusinessModel;
|
|
|
|
use G;
|
|
use Criteria;
|
|
use PMLicensedFeatures;
|
|
use ProcessMaker\Model\Delegation;
|
|
use UsersPeer;
|
|
|
|
/**
|
|
* @copyright Colosa - Bolivia
|
|
*/
|
|
class Lists
|
|
{
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $mapList;
|
|
/**
|
|
* @var \ListInbox
|
|
*/
|
|
private $ListInbox;
|
|
/**
|
|
* @var \ListInbox
|
|
*/
|
|
private $ListDraft;
|
|
/**
|
|
* @var \ListCanceled
|
|
*/
|
|
private $ListCanceled;
|
|
/**
|
|
* @var \ListParticipatedLast
|
|
*/
|
|
private $ListParticipated;
|
|
/**
|
|
* @var \ListPaused
|
|
*/
|
|
private $ListPaused;
|
|
/**
|
|
* @var \ListCompleted
|
|
*/
|
|
private $ListCompleted;
|
|
/**
|
|
* @var Consolidated
|
|
*/
|
|
private $ListConsolidated;
|
|
/**
|
|
* @var \ListUnassigned
|
|
*/
|
|
private $ListSelfService;
|
|
|
|
/**
|
|
* Lists constructor.
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->mapList = array(
|
|
'ListInbox' => 'CASES_INBOX',
|
|
'ListDraft' => 'CASES_DRAFT',
|
|
'ListCanceled' => 'CASES_CANCELLED',
|
|
'ListParticipated' => 'CASES_SENT',
|
|
'ListPaused' => 'CASES_PAUSED',
|
|
'ListCompleted' => 'CASES_COMPLETED',
|
|
/*----------------------------------********---------------------------------*/
|
|
'ListConsolidated' => 'CONSOLIDATED_CASES',
|
|
/*----------------------------------********---------------------------------*/
|
|
'ListSelfService' => 'CASES_SELFSERVICE'
|
|
);
|
|
|
|
$this->ListInbox = new \ListInbox();
|
|
$this->ListDraft = new \ListInbox();
|
|
$this->ListCanceled = new \ListCanceled();
|
|
$this->ListParticipated = new \ListParticipatedLast();
|
|
$this->ListPaused = new \ListPaused();
|
|
$this->ListCompleted = new \ListCompleted();
|
|
/*----------------------------------********---------------------------------*/
|
|
$this->ListConsolidated = new Consolidated();
|
|
/*----------------------------------********---------------------------------*/
|
|
$this->ListSelfService = new \ListUnassigned();
|
|
}
|
|
|
|
|
|
/**
|
|
* Get list for Cases
|
|
*
|
|
* @access public
|
|
* @param array $dataList , Data for list
|
|
* @return array
|
|
*
|
|
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
|
* @copyright Colosa - Bolivia
|
|
*/
|
|
public function getList($listName = 'inbox', $dataList = array(), $total = false)
|
|
{
|
|
Validator::isArray($dataList, '$dataList');
|
|
if (!isset($dataList["userId"])) {
|
|
throw (new \Exception(\G::LoadTranslation("ID_USER_NOT_EXIST", array('userId', ''))));
|
|
} else {
|
|
Validator::usrUid($dataList["userId"], "userId");
|
|
}
|
|
|
|
$userUid = $dataList["userId"];
|
|
$filters["paged"] = isset($dataList["paged"]) ? $dataList["paged"] : true;
|
|
$filters['count'] = isset($dataList['count']) ? $dataList['count'] : true;
|
|
$filters["category"] = isset($dataList["category"]) ? $dataList["category"] : "";
|
|
$filters["process"] = isset($dataList["process"]) ? $dataList["process"] : "";
|
|
$filters["search"] = isset($dataList["search"]) ? $dataList["search"] : "";
|
|
$filters["filter"] = isset($dataList["filter"]) ? $dataList["filter"] : "";
|
|
$filters["dateFrom"] = (!empty($dataList["dateFrom"])) ? substr($dataList["dateFrom"], 0, 10) : "";
|
|
$filters["dateTo"] = (!empty($dataList["dateTo"])) ? substr($dataList["dateTo"], 0, 10) : "";
|
|
$filters["start"] = isset($dataList["start"]) ? $dataList["start"] : "0";
|
|
$filters["limit"] = isset($dataList["limit"]) ? $dataList["limit"] : "25";
|
|
$filters["sort"] = isset($dataList["sort"]) ? $dataList["sort"] : "";
|
|
$filters["dir"] = isset($dataList["dir"]) ? $dataList["dir"] : "ASC";
|
|
$filters["action"] = isset($dataList["action"]) ? $dataList["action"] : "";
|
|
$filters['newestthan'] = isset($dataList['newerThan']) ? $dataList['newerThan'] : '';
|
|
$filters['oldestthan'] = isset($dataList['oldestthan']) ? $dataList['oldestthan'] : '';
|
|
$filters['appUidCheck'] = isset($dataList['appUidCheck']) ? $dataList['appUidCheck'] : array();
|
|
|
|
// Select list
|
|
switch ($listName) {
|
|
case 'inbox':
|
|
$list = new \ListInbox();
|
|
$listpeer = 'ListInboxPeer';
|
|
break;
|
|
case 'participated_history':
|
|
$list = new \ListParticipatedHistory();
|
|
$listpeer = 'ListParticipatedHistoryPeer';
|
|
break;
|
|
case 'participated_last':
|
|
$list = new \ListParticipatedLast();
|
|
$listpeer = 'ListParticipatedLastPeer';
|
|
break;
|
|
case 'completed':
|
|
$list = new \ListCompleted();
|
|
$listpeer = 'ListCompletedPeer';
|
|
break;
|
|
case 'paused':
|
|
$list = new \ListPaused();
|
|
$listpeer = 'ListPausedPeer';
|
|
break;
|
|
case 'canceled':
|
|
$list = new \ListCanceled();
|
|
$listpeer = 'ListCanceledPeer';
|
|
break;
|
|
case 'my_inbox':
|
|
$list = new \ListMyInbox();
|
|
$listpeer = 'ListMyInboxPeer';
|
|
break;
|
|
case 'unassigned':
|
|
$list = new \ListUnassigned();
|
|
$listpeer = 'ListUnassignedPeer';
|
|
break;
|
|
}
|
|
|
|
|
|
// Validate filters
|
|
$filters["start"] = (int)$filters["start"];
|
|
$filters["start"] = abs($filters["start"]);
|
|
if ($filters["start"] != 0) {
|
|
$filters["start"] + 1;
|
|
}
|
|
|
|
$filters["limit"] = (int)$filters["limit"];
|
|
$filters["limit"] = abs($filters["limit"]);
|
|
if ($filters["limit"] == 0) {
|
|
$conf = new \Configurations();
|
|
$generalConfCasesList = $conf->getConfiguration('ENVIRONMENT_SETTINGS', '');
|
|
if (isset($generalConfCasesList['casesListRowNumber'])) {
|
|
$filters["limit"] = (int)$generalConfCasesList['casesListRowNumber'];
|
|
} else {
|
|
$filters["limit"] = 25;
|
|
}
|
|
} else {
|
|
$filters["limit"] = (int)$filters["limit"];
|
|
}
|
|
|
|
$filters["sort"] = G::toUpper($filters["sort"]);
|
|
$columnsList = $listpeer::getFieldNames(\BasePeer::TYPE_FIELDNAME);
|
|
if (!(in_array($filters["sort"], $columnsList))) {
|
|
$filters["sort"] = '';
|
|
}
|
|
|
|
$filters["dir"] = G::toUpper($filters["dir"]);
|
|
if (!($filters["dir"] == 'DESC' || $filters["dir"] == 'ASC')) {
|
|
$filters["dir"] = 'DESC';
|
|
}
|
|
if ($filters["process"] != '') {
|
|
Validator::proUid($filters["process"], '$pro_uid');
|
|
}
|
|
if ($filters["category"] != '') {
|
|
Validator::catUid($filters["category"], '$cat_uid');
|
|
}
|
|
if ($filters["dateFrom"] != '') {
|
|
Validator::isDate($filters["dateFrom"], 'Y-m-d', '$date_from');
|
|
}
|
|
if ($filters["dateTo"] != '') {
|
|
Validator::isDate($filters["dateTo"], 'Y-m-d', '$date_to');
|
|
}
|
|
|
|
if ($total) {
|
|
$total = $list->getCountList($userUid, $filters);
|
|
return $total;
|
|
}
|
|
|
|
$result = $list->loadList($userUid, $filters);
|
|
if (!empty($result)) {
|
|
foreach ($result as &$value) {
|
|
if (isset($value['DEL_PREVIOUS_USR_UID'])) {
|
|
$value['PREVIOUS_USR_UID'] = $value['DEL_PREVIOUS_USR_UID'];
|
|
$value['PREVIOUS_USR_USERNAME'] = $value['DEL_PREVIOUS_USR_USERNAME'];
|
|
$value['PREVIOUS_USR_FIRSTNAME'] = $value['DEL_PREVIOUS_USR_FIRSTNAME'];
|
|
$value['PREVIOUS_USR_LASTNAME'] = $value['DEL_PREVIOUS_USR_LASTNAME'];
|
|
}
|
|
if (isset($value['DEL_DUE_DATE'])) {
|
|
$value['DEL_TASK_DUE_DATE'] = $value['DEL_DUE_DATE'];
|
|
}
|
|
if (isset($value['APP_PAUSED_DATE'])) {
|
|
$value['APP_UPDATE_DATE'] = $value['APP_PAUSED_DATE'];
|
|
}
|
|
if (isset($value['DEL_CURRENT_USR_USERNAME'])) {
|
|
$value['USR_USERNAME'] = $value['DEL_CURRENT_USR_USERNAME'];
|
|
$value['USR_FIRSTNAME'] = $value['DEL_CURRENT_USR_FIRSTNAME'];
|
|
$value['USR_LASTNAME'] = $value['DEL_CURRENT_USR_LASTNAME'];
|
|
$value['APP_UPDATE_DATE'] = $value['DEL_DELEGATE_DATE'];
|
|
}
|
|
if (isset($value['APP_STATUS'])) {
|
|
$value['APP_STATUS_LABEL'] = G::LoadTranslation("ID_{$value['APP_STATUS']}");
|
|
}
|
|
|
|
|
|
//$value = array_change_key_case($value, CASE_LOWER);
|
|
}
|
|
}
|
|
$response = array();
|
|
if ($filters["paged"]) {
|
|
$filtersData = array();
|
|
$filtersData['start'] = $filters["start"];
|
|
$filtersData['limit'] = $filters["limit"];
|
|
$filtersData['sort'] = G::toLower($filters["sort"]);
|
|
$filtersData['dir'] = G::toLower($filters["dir"]);
|
|
$filtersData['cat_uid'] = $filters["category"];
|
|
$filtersData['pro_uid'] = $filters["process"];
|
|
$filtersData['search'] = $filters["search"];
|
|
$filtersData['date_from'] = $filters["dateFrom"];
|
|
$filtersData['date_to'] = $filters["dateTo"];
|
|
$response['filters'] = $filtersData;
|
|
$response['data'] = $result;
|
|
$filtersData['action'] = $filters["action"];
|
|
$response['totalCount'] = $list->getCountList($userUid, $filtersData);
|
|
} else {
|
|
$response = $result;
|
|
}
|
|
return $response;
|
|
}
|
|
|
|
/**
|
|
* Get counters for lists
|
|
*
|
|
* @param $userId
|
|
* @return array
|
|
*/
|
|
public function getCounters($userId)
|
|
{
|
|
$list = $this->mapList;
|
|
$response = array();
|
|
foreach ($list as $listObject => $item) {
|
|
switch ($listObject) {
|
|
case 'ListDraft':
|
|
$total = $this->$listObject->getCountList($userId, array('action' => 'draft'));
|
|
array_push($response, (array('count' => $total, 'item' => $item)));
|
|
break;
|
|
case 'ListSelfService':
|
|
$total = Delegation::countSelfService($userId);
|
|
array_push($response, ([
|
|
'count' => $total,
|
|
'item' => $item
|
|
]));
|
|
break;
|
|
/*----------------------------------********---------------------------------*/
|
|
case 'ListConsolidated':
|
|
$licensedFeatures = PMLicensedFeatures::getSingleton();
|
|
if ($licensedFeatures->verifyfeature('7TTeDBQeWRoZTZKYjh4eFpYUlRDUUEyVERPU3FxellWank=')) {
|
|
$total = $this->$listObject->getCountList($userId);
|
|
array_push($response, (array('count' => $total, 'item' => $item)));
|
|
}
|
|
break;
|
|
/*----------------------------------********---------------------------------*/
|
|
default:
|
|
$totalInbox = $this->$listObject->getCountList($userId);
|
|
array_push($response, (array('count' => $totalInbox, 'item' => $item)));
|
|
break;
|
|
}
|
|
}
|
|
return $response;
|
|
}
|
|
}
|