Merged in bugfix/PMCORE-2424 (pull request #7570)
PMCORE-2424 Approved-by: Paula Quispe <paula.quispe@processmaker.com>
This commit is contained in:
@@ -4,13 +4,13 @@ namespace ProcessMaker\BusinessModel;
|
|||||||
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use G;
|
use G;
|
||||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use ProcessMaker\BusinessModel\Cases;
|
|
||||||
use ProcessMaker\Model\Application;
|
use ProcessMaker\Model\Application;
|
||||||
use ProcessMaker\Model\Delegation;
|
use ProcessMaker\Model\Delegation;
|
||||||
use ProcessMaker\Model\Documents;
|
use ProcessMaker\Model\Documents;
|
||||||
use ProcessMaker\Model\ListUnassigned;
|
use ProcessMaker\Model\ListUnassigned;
|
||||||
|
use ProcessMaker\Model\Process;
|
||||||
|
use ProcessMaker\Model\Step;
|
||||||
use ProcessMaker\Model\Task;
|
use ProcessMaker\Model\Task;
|
||||||
use ProcessMaker\Model\Triggers;
|
use ProcessMaker\Model\Triggers;
|
||||||
use ProcessMaker\Model\User;
|
use ProcessMaker\Model\User;
|
||||||
@@ -18,7 +18,7 @@ use RBAC;
|
|||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DelegationTest
|
* Class CasesTest
|
||||||
*
|
*
|
||||||
* @coversDefaultClass \ProcessMaker\BusinessModel\Cases
|
* @coversDefaultClass \ProcessMaker\BusinessModel\Cases
|
||||||
*/
|
*/
|
||||||
@@ -315,4 +315,66 @@ class CasesTest extends TestCase
|
|||||||
$casesExecuted = Cases::executeSelfServiceTimeout();
|
$casesExecuted = Cases::executeSelfServiceTimeout();
|
||||||
$this->assertTrue(is_array($casesExecuted));
|
$this->assertTrue(is_array($casesExecuted));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It test get assigned DynaForms as steps by application Uid
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\BusinessModel\Cases::dynaFormsByApplication()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_get_dynaforms_by_application()
|
||||||
|
{
|
||||||
|
// Create a process
|
||||||
|
$process = factory(Process::class)->create();
|
||||||
|
|
||||||
|
// Create a task related to the process
|
||||||
|
$task1 = factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Created another task related to the process
|
||||||
|
$task2 = factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Created a step related to the first task
|
||||||
|
factory(Step::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'TAS_UID' => $task1->TAS_UID,
|
||||||
|
'STEP_TYPE_OBJ' => 'DYNAFORM',
|
||||||
|
'STEP_UID_OBJ' => G::generateUniqueID(),
|
||||||
|
'STEP_POSITION' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Created a step related to the second task and with a specific DynaForm Uid
|
||||||
|
$dynUid = G::generateUniqueID();
|
||||||
|
factory(Step::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'TAS_UID' => $task2->TAS_UID,
|
||||||
|
'STEP_TYPE_OBJ' => 'DYNAFORM',
|
||||||
|
'STEP_UID_OBJ' => $dynUid,
|
||||||
|
'STEP_POSITION' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Create an application related to the process in draft status
|
||||||
|
$application = factory(Application::class)->create([
|
||||||
|
'PRO_UID' => $process->PRO_UID,
|
||||||
|
'APP_STATUS' => 'DRAFT'
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Get all DynaForms assigned as steps
|
||||||
|
self::assertCount(2, Cases::dynaFormsByApplication($application->APP_UID));
|
||||||
|
|
||||||
|
// Get DynaForms assigned as steps for the first task
|
||||||
|
self::assertCount(1, Cases::dynaFormsByApplication($application->APP_UID, $task1->TAS_UID));
|
||||||
|
|
||||||
|
// Get DynaForms assigned as steps sending a specific DynaForm Uid
|
||||||
|
self::assertCount(1, Cases::dynaFormsByApplication($application->APP_UID, '', $dynUid));
|
||||||
|
|
||||||
|
// Get DynaForms assigned as steps for the second task when the application status is DRAFT
|
||||||
|
self::assertCount(1, Cases::dynaFormsByApplication($application->APP_UID, $task2->TAS_UID, '', 'TO_DO'));
|
||||||
|
|
||||||
|
// Get DynaForms assigned as steps for the second task when the application status is COMPLETED
|
||||||
|
self::assertCount(2, Cases::dynaFormsByApplication($application->APP_UID, $task2->TAS_UID, '', 'COMPLETED'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use ProcessMaker\BusinessModel\Cases as BusinessModelCases;
|
||||||
use ProcessMaker\BusinessModel\Task as BusinessModelTask;
|
use ProcessMaker\BusinessModel\Task as BusinessModelTask;
|
||||||
use ProcessMaker\BusinessModel\User as BusinessModelUser;
|
use ProcessMaker\BusinessModel\User as BusinessModelUser;
|
||||||
use ProcessMaker\BusinessModel\WebEntryEvent;
|
use ProcessMaker\BusinessModel\WebEntryEvent;
|
||||||
@@ -6093,7 +6094,7 @@ class Cases
|
|||||||
switch ($opType) {
|
switch ($opType) {
|
||||||
case 'ANY':
|
case 'ANY':
|
||||||
//For dynaforms
|
//For dynaforms
|
||||||
$listDynaform = $objectPermission->objectPermissionByDynaform(
|
$listDynaform = BusinessModelCases::dynaFormsByApplication(
|
||||||
$appUid,
|
$appUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
$opObjUid,
|
$opObjUid,
|
||||||
@@ -6153,7 +6154,7 @@ class Cases
|
|||||||
$resultMessages = array_merge($resultMessages, $listMessage);
|
$resultMessages = array_merge($resultMessages, $listMessage);
|
||||||
break;
|
break;
|
||||||
case 'DYNAFORM':
|
case 'DYNAFORM':
|
||||||
$listDynaform = $objectPermission->objectPermissionByDynaform(
|
$listDynaform = BusinessModelCases::dynaFormsByApplication(
|
||||||
$appUid,
|
$appUid,
|
||||||
$opTaskSource,
|
$opTaskSource,
|
||||||
$opObjUid,
|
$opObjUid,
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ use Exception;
|
|||||||
use G;
|
use G;
|
||||||
use Groups;
|
use Groups;
|
||||||
use GroupUserPeer;
|
use GroupUserPeer;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use InputDocument;
|
use InputDocument;
|
||||||
use InvalidIndexSearchTextException;
|
use InvalidIndexSearchTextException;
|
||||||
@@ -4235,4 +4236,48 @@ class Cases
|
|||||||
throw $e;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user