Merged in bugfix/PMCORE-3136 (pull request #8055)
PMCORE-3136 Approved-by: Julio Cesar Laura Avendaño
This commit is contained in:
committed by
Julio Cesar Laura Avendaño
commit
cee600a21e
@@ -1583,4 +1583,78 @@ class AbstractCases implements CasesInterface
|
||||
}
|
||||
return $query->get()->values()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cases risk by process
|
||||
*
|
||||
* @param int $processId
|
||||
* @param string $dateFrom
|
||||
* @param string $dateTo
|
||||
* @param string $riskStatus
|
||||
* @param int $topCases
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getCasesRisk($processId, $dateFrom = null, $dateTo = null, $riskStatus = 'ON_TIME', $topCases = null)
|
||||
{
|
||||
$date = new DateTime('now');
|
||||
$currentDate = $date->format('Y-m-d H:i:s');
|
||||
$query = Delegation::selectRaw('
|
||||
APP_DELEGATION.APP_NUMBER as number_case,
|
||||
APP_DELEGATION.DEL_DELEGATE_DATE as delegated,
|
||||
APP_DELEGATION.DEL_RISK_DATE as at_risk,
|
||||
APP_DELEGATION.DEL_TASK_DUE_DATE as due_date,
|
||||
APP_DELEGATION.APP_UID as app_uid,
|
||||
APP_DELEGATION.DEL_INDEX as del_index,
|
||||
APP_DELEGATION.TAS_UID as tas_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();
|
||||
$query->processInList([$processId]);
|
||||
|
||||
if (!is_null($dateFrom)) {
|
||||
$query->where('APP_DELEGATION.DEL_DELEGATE_DATE', '>=', $dateFrom);
|
||||
}
|
||||
if (!is_null($dateTo)) {
|
||||
$query->where('APP_DELEGATION.DEL_DELEGATE_DATE', '<=', $dateTo);
|
||||
}
|
||||
if (!is_null($topCases)) {
|
||||
$query->orderBy('APP_DELEGATION.DEL_DELEGATE_DATE', 'ASC')->limit($topCases);
|
||||
}
|
||||
$value = 'due_date';
|
||||
switch ($riskStatus) {
|
||||
case 'ON_TIME':
|
||||
$query->onTime($currentDate);
|
||||
$value = 'at_risk';
|
||||
break;
|
||||
case 'AT_RISK':
|
||||
$query->atRisk($currentDate);
|
||||
break;
|
||||
case 'OVERDUE':
|
||||
$query->overdue($currentDate);
|
||||
break;
|
||||
}
|
||||
$res = $query->get()->values()->toArray();
|
||||
foreach ($res as $key => $values) {
|
||||
$riskDate = new DateTime($values[$value]);
|
||||
$days = ['days' => $date->diff($riskDate)->days];
|
||||
$res[$key] = $days + $res[$key];
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,7 +388,7 @@ class Delegation extends Model
|
||||
*/
|
||||
public function scopeAtRisk($query, $now)
|
||||
{
|
||||
return $query->where('DEL_RISK_DATE', '>=', $now)->where('DEL_TASK_DUE_DATE', '>=', $now);
|
||||
return $query->where('DEL_RISK_DATE', '<=', $now)->where('DEL_TASK_DUE_DATE', '>=', $now);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -401,7 +401,7 @@ class Delegation extends Model
|
||||
*/
|
||||
public function scopeOverdue($query, $now)
|
||||
{
|
||||
return $query->where('DEL_TASK_DUE_DATE', '>', $now);
|
||||
return $query->where('DEL_TASK_DUE_DATE', '<', $now);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -157,4 +157,46 @@ class Metrics extends Api
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*/
|
||||
public function getCasesRiskByProcess($caseList = 'inbox', $process, $dateFrom = null, $dateTo = null, $riskStatus = 'ON_TIME', $topCases = null)
|
||||
{
|
||||
try {
|
||||
$usrId = $this->getUserId();
|
||||
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;
|
||||
}
|
||||
$list->setUserId($usrId);
|
||||
$result = $list->getCasesRisk($process, $dateFrom, $dateTo, $riskStatus, $topCases);
|
||||
return $result;
|
||||
} catch (Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user