2021-07-13 11:26:05 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace ProcessMaker\Services\Api;
|
|
|
|
|
|
|
|
|
|
use Exception;
|
2021-11-25 15:08:32 -04:00
|
|
|
use Luracast\Restler\RestException;
|
2021-07-13 11:26:05 -04:00
|
|
|
use ProcessMaker\BusinessModel\Cases\Draft;
|
|
|
|
|
use ProcessMaker\BusinessModel\Cases\Inbox;
|
|
|
|
|
use ProcessMaker\BusinessModel\Cases\Paused;
|
|
|
|
|
use ProcessMaker\BusinessModel\Cases\Unassigned;
|
|
|
|
|
use ProcessMaker\Services\Api;
|
|
|
|
|
use RBAC;
|
|
|
|
|
|
|
|
|
|
class Metrics extends Api
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Constructor of the class
|
|
|
|
|
* Defines the $RBAC definition
|
|
|
|
|
*/
|
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
global $RBAC;
|
|
|
|
|
if (!isset($RBAC)) {
|
|
|
|
|
$RBAC = RBAC::getSingleton(PATH_DATA, session_id());
|
|
|
|
|
$RBAC->sSystem = 'PROCESSMAKER';
|
|
|
|
|
$RBAC->initRBAC();
|
|
|
|
|
$RBAC->loadUserRolePermission($RBAC->sSystem, $this->getUserId());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get total cases per process
|
|
|
|
|
*
|
2021-08-10 14:20:06 -04:00
|
|
|
* @url GET /total-cases-by-process
|
2021-07-13 11:26:05 -04:00
|
|
|
*
|
|
|
|
|
* @param string $caseList
|
|
|
|
|
* @param int $category
|
|
|
|
|
* @param bool $topTen
|
|
|
|
|
* @param array $processes
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @throws RestException
|
|
|
|
|
*
|
|
|
|
|
* @class AccessControl {@permission TASK_METRICS_VIEW}
|
|
|
|
|
*/
|
|
|
|
|
public function getProcessTotalCases($caseList, $category = null, $topTen = false, $processes = [])
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
switch ($caseList) {
|
|
|
|
|
case 'inbox':
|
|
|
|
|
$list = new Inbox();
|
|
|
|
|
break;
|
|
|
|
|
case 'draft':
|
|
|
|
|
$list = new Draft();
|
|
|
|
|
break;
|
|
|
|
|
case 'paused':
|
|
|
|
|
$list = new Paused();
|
|
|
|
|
break;
|
|
|
|
|
case 'unassigned':
|
|
|
|
|
$list = new Unassigned();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$result = $list->getCountersByProcesses($category, $topTen, $processes);
|
|
|
|
|
return $result;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-21 16:18:36 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get total cases by range
|
|
|
|
|
*
|
2021-08-16 09:44:59 -04:00
|
|
|
* @url GET /process-total-cases
|
2021-07-21 16:18:36 -04:00
|
|
|
*
|
|
|
|
|
* @param string $caseList
|
|
|
|
|
* @param int $processId
|
|
|
|
|
* @param string $dateFrom
|
|
|
|
|
* @param string $dateTo
|
|
|
|
|
* @param string $groupBy
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @throws RestException
|
|
|
|
|
*
|
|
|
|
|
* @class AccessControl {@permission TASK_METRICS_VIEW}
|
|
|
|
|
*/
|
|
|
|
|
public function getTotalCasesByRange($caseList, $processId = null, $dateFrom = null, $dateTo = null, $groupBy = 'day')
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
switch ($caseList) {
|
|
|
|
|
case 'inbox':
|
|
|
|
|
$list = new Inbox();
|
|
|
|
|
break;
|
|
|
|
|
case 'draft':
|
|
|
|
|
$list = new Draft();
|
|
|
|
|
break;
|
|
|
|
|
case 'paused':
|
|
|
|
|
$list = new Paused();
|
|
|
|
|
break;
|
|
|
|
|
case 'unassigned':
|
|
|
|
|
$list = new Unassigned();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$result = $list->getCountersByRange($processId, $dateFrom, $dateTo, $groupBy);
|
|
|
|
|
return $result;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-19 15:24:54 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get total of cases per list
|
|
|
|
|
*
|
2021-08-10 14:20:06 -04:00
|
|
|
* @url GET /list-total-cases
|
2021-07-19 15:24:54 -04:00
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @throws RestException
|
2021-11-25 15:08:32 -04:00
|
|
|
*
|
|
|
|
|
* @class AccessControl {@permission TASK_METRICS_VIEW}
|
2021-07-19 15:24:54 -04:00
|
|
|
*/
|
|
|
|
|
public function getCountersList()
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
$listInbox = new Inbox();
|
|
|
|
|
$listDraft = new Draft();
|
|
|
|
|
$listPaused = new Paused();
|
|
|
|
|
$listUnassigned = new Unassigned();
|
|
|
|
|
|
2021-11-25 15:08:32 -04:00
|
|
|
$casesInbox = $listInbox->getCounterMetrics();
|
|
|
|
|
$casesDraft = $listDraft->getCounterMetrics();
|
|
|
|
|
$casesPaused = $listPaused->getCounterMetrics();
|
|
|
|
|
$casesUnassigned = $listUnassigned->getCounterMetrics();
|
2021-07-19 15:24:54 -04:00
|
|
|
|
|
|
|
|
$result = [
|
|
|
|
|
['List Name' => 'Inbox', 'Total' => $casesInbox, 'Color' => 'green'],
|
|
|
|
|
['List Name' => 'Draft', 'Total' => $casesDraft, 'Color' => 'yellow'],
|
|
|
|
|
['List Name' => 'Paused', 'Total' => $casesPaused, 'Color' => 'blue'],
|
|
|
|
|
['List Name' => 'Unassigned', 'Total' => $casesUnassigned, 'Color' => 'gray']
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-08-19 16:36:29 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get total cases risk
|
|
|
|
|
*
|
|
|
|
|
* @url GET /cases-risk
|
|
|
|
|
*
|
|
|
|
|
* @param string $caseList
|
|
|
|
|
* @param int $process
|
|
|
|
|
* @param string $dateFrom
|
|
|
|
|
* @param string $dateTo
|
|
|
|
|
* @param string $riskStatus
|
|
|
|
|
* @param int $topCases
|
|
|
|
|
*
|
|
|
|
|
* @return array
|
|
|
|
|
*
|
|
|
|
|
* @throws RestException
|
2021-11-25 15:08:32 -04:00
|
|
|
*
|
|
|
|
|
* @class AccessControl {@permission TASK_METRICS_VIEW}
|
2021-08-19 16:36:29 -04:00
|
|
|
*/
|
2022-07-21 00:04:21 -04:00
|
|
|
public function getCasesRiskByProcess($caseList = 'inbox', $process = '', $dateFrom = null, $dateTo = null, $riskStatus = 'ON_TIME', $topCases = null)
|
2021-08-19 16:36:29 -04:00
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
switch ($caseList) {
|
|
|
|
|
case 'inbox':
|
|
|
|
|
$list = new Inbox();
|
|
|
|
|
break;
|
|
|
|
|
case 'draft':
|
|
|
|
|
$list = new Draft();
|
|
|
|
|
break;
|
|
|
|
|
case 'paused':
|
|
|
|
|
$list = new Paused();
|
|
|
|
|
break;
|
|
|
|
|
case 'unassigned':
|
|
|
|
|
$list = new Unassigned();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
$result = $list->getCasesRisk($process, $dateFrom, $dateTo, $riskStatus, $topCases);
|
|
|
|
|
return $result;
|
|
|
|
|
} catch (Exception $e) {
|
|
|
|
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-07-13 11:26:05 -04:00
|
|
|
}
|