PMCORE-2424

This commit is contained in:
Julio Cesar Laura Avendaño
2020-11-30 20:01:43 +00:00
parent 20b29ff148
commit 3fc6e37bb1
3 changed files with 113 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
<?php
use Illuminate\Support\Facades\Log;
use ProcessMaker\BusinessModel\Cases as BusinessModelCases;
use ProcessMaker\BusinessModel\Task as BusinessModelTask;
use ProcessMaker\BusinessModel\User as BusinessModelUser;
use ProcessMaker\BusinessModel\WebEntryEvent;
@@ -6093,7 +6094,7 @@ class Cases
switch ($opType) {
case 'ANY':
//For dynaforms
$listDynaform = $objectPermission->objectPermissionByDynaform(
$listDynaform = BusinessModelCases::dynaFormsByApplication(
$appUid,
$opTaskSource,
$opObjUid,
@@ -6153,7 +6154,7 @@ class Cases
$resultMessages = array_merge($resultMessages, $listMessage);
break;
case 'DYNAFORM':
$listDynaform = $objectPermission->objectPermissionByDynaform(
$listDynaform = BusinessModelCases::dynaFormsByApplication(
$appUid,
$opTaskSource,
$opObjUid,

View File

@@ -33,6 +33,7 @@ use Exception;
use G;
use Groups;
use GroupUserPeer;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use InputDocument;
use InvalidIndexSearchTextException;
@@ -4235,4 +4236,48 @@ class Cases
throw $e;
}
}
/**
* Get DynaForms Uids assigned as steps in the related process by application Uid
*
* @param string $appUid
* @param int $sourceTask
* @param string $dynUid
* @param string $caseStatus
* @return array
*/
public static function dynaFormsByApplication($appUid, $sourceTask = 0, $dynUid = '', $caseStatus = '')
{
// Select distinct DYN_UID
$query = ModelApplication::query()->select('STEP.STEP_UID_OBJ AS DYN_UID')->distinct();
// Join with STEP table
$query->join('STEP', function ($join) {
$join->on('APPLICATION.PRO_UID', '=', 'STEP.PRO_UID');
$join->on('STEP.STEP_TYPE_OBJ', '=', DB::raw("'DYNAFORM'"));
});
// Filter by application Uid
$query->where('APPLICATION.APP_UID', '=', $appUid);
// Filter by source task
if ($caseStatus != 'COMPLETED' && $sourceTask != '' && (int)$sourceTask != 0) {
$query->where('STEP.TAS_UID', '=', $sourceTask);
}
// Filter by DynaForm Uid
if ($dynUid != '' && $dynUid != '0') {
$query->where('STEP.STEP_UID_OBJ', '=', $dynUid);
}
// Get results
$dynaForms = [];
$items = $query->get();
$items->each(function ($item) use (&$dynaForms) {
$dynaForms[] = $item->DYN_UID;
});
// Return results
return $dynaForms;
}
}