Merged in feature/PMCORE-3130 (pull request #7978)
PMCORE-3130 Approved-by: Julio Cesar Laura Avendaño
This commit is contained in:
committed by
Julio Cesar Laura Avendaño
commit
4be69e3ffa
@@ -642,10 +642,10 @@ class AbstractCases implements CasesInterface
|
||||
$specificCases = [];
|
||||
$rangeCases = [];
|
||||
foreach ($rangeOfCases as $cases) {
|
||||
if(is_numeric($cases)) {
|
||||
array_push($specificCases,$cases);
|
||||
if (is_numeric($cases)) {
|
||||
array_push($specificCases, $cases);
|
||||
} else {
|
||||
array_push($rangeCases,$cases);
|
||||
array_push($rangeCases, $cases);
|
||||
}
|
||||
}
|
||||
$this->setCasesNumbers($specificCases);
|
||||
@@ -1161,7 +1161,7 @@ class AbstractCases implements CasesInterface
|
||||
// Review if require other information
|
||||
if ($onlyTask) {
|
||||
// Thread tasks
|
||||
if($key === 'user_id') {
|
||||
if ($key === 'user_id') {
|
||||
$threadTasks[$i][$key] = $row;
|
||||
// Get the user tooltip information
|
||||
$threadTasks[$i]['user_tooltip'] = User::getInformation($row);
|
||||
@@ -1184,7 +1184,7 @@ class AbstractCases implements CasesInterface
|
||||
}
|
||||
}
|
||||
}
|
||||
$i ++;
|
||||
$i++;
|
||||
}
|
||||
// Define the array responses
|
||||
$result['THREAD_TASKS'] = $threadTasks;
|
||||
@@ -1431,4 +1431,47 @@ class AbstractCases implements CasesInterface
|
||||
{
|
||||
throw new Exception("Method '" . __FUNCTION__ . "' should be implemented in the extended class '" . get_class($this) . "'.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Count how many cases has each process
|
||||
*
|
||||
* @param string $list
|
||||
* @param int $category
|
||||
* @param bool $topTen
|
||||
* @param array $processes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getCountersByProcesses($category = null, $topTen = false, $processes = [])
|
||||
{
|
||||
$query = Delegation::selectRaw('count(APP_DELEGATION.DELEGATION_ID) as TOTAL, APP_DELEGATION.PRO_ID, PROCESS.PRO_TITLE')
|
||||
->groupBy('APP_DELEGATION.PRO_UID');
|
||||
$listArray = explode("\\", get_class($this));
|
||||
$list = end($listArray);
|
||||
switch ($list) {
|
||||
case 'Inbox':
|
||||
$query->inbox($this->getUserId());
|
||||
break;
|
||||
case 'Draft':
|
||||
$query->draft($this->getUserId());
|
||||
break;
|
||||
case 'Paused':
|
||||
$query->paused($this->getUserId());
|
||||
break;
|
||||
case 'Unassigned':
|
||||
$query->selfService($this->getUserUid());
|
||||
break;
|
||||
}
|
||||
$query->joinProcess();
|
||||
if (!is_null($category)) {
|
||||
$query->categoryId($category);
|
||||
}
|
||||
if ($topTen) {
|
||||
$query->topTen('TOTAL', 'DESC');
|
||||
}
|
||||
if (!empty($processes)) {
|
||||
$query->inProcesses($processes);
|
||||
}
|
||||
return $query->get()->values()->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ class Paused extends AbstractCases
|
||||
|
||||
/**
|
||||
* Gets the data for the paused cases list
|
||||
*
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getData()
|
||||
@@ -126,7 +126,7 @@ class Paused extends AbstractCases
|
||||
// Get task status
|
||||
$item['TAS_STATUS'] = self::TASK_STATUS[$item['TAS_COLOR']];
|
||||
// Get delay
|
||||
$item['DELAY'] = getDiffBetweenDates($item['DEL_TASK_DUE_DATE'], date("Y-m-d H:i:s"));
|
||||
$item['DELAY'] = getDiffBetweenDates($item['DEL_TASK_DUE_DATE'], date("Y-m-d H:i:s"));
|
||||
// Apply the date format defined in environment
|
||||
$item['DEL_TASK_DUE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_TASK_DUE_DATE']);
|
||||
$item['DEL_DELEGATE_DATE_LABEL'] = applyMaskDateEnvironment($item['DEL_DELEGATE_DATE']);
|
||||
@@ -146,7 +146,7 @@ class Paused extends AbstractCases
|
||||
|
||||
/**
|
||||
* Count how many cases the user has in PAUSED, does not apply filters
|
||||
*
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getCounter()
|
||||
|
||||
@@ -1015,6 +1015,49 @@ class Delegation extends Model
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope process category id
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param int $category
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeCategoryId($query, $category)
|
||||
{
|
||||
$query->where('PROCESS.CATEGORY_ID', $category);
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope top ten
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $column
|
||||
* @param string $order
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeTopTen($query, $column, $order)
|
||||
{
|
||||
$query->orderBy($column, $order)->limit(10);
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope where in processes
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param array $processes
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeInProcesses($query, $processes)
|
||||
{
|
||||
$query->whereIn('PROCESS.PRO_ID', $processes);
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get specific cases unassigned that the user can view
|
||||
*
|
||||
|
||||
69
workflow/engine/src/ProcessMaker/Services/Api/Metrics.php
Normal file
69
workflow/engine/src/ProcessMaker/Services/Api/Metrics.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
namespace ProcessMaker\Services\Api;
|
||||
|
||||
use Exception;
|
||||
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
|
||||
*
|
||||
* @url /process-total-cases
|
||||
*
|
||||
* @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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user