+
+
+ {{ props["headings"][props.column] }} : {{ props["item"]["CASE_NUMBER"] }}
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["CASE_TITLE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["PROCESS_NAME"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["DUE_DATE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["DELEGATION_DATE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+
+
+
+
+
+
+
+
+
+ {{ props["headings"][props.column] }} : {{ props["item"]["CASE_NUMBER"] }}
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["CASE_TITLE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["PROCESS_NAME"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["DUE_DATE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+ {{ props["item"]["DELEGATION_DATE"] }}
+
+
+
+ {{ props["headings"][props.column] }} :
+
+
+
+
+
-
\ No newline at end of file
diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/DraftTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/DraftTest.php
index b8f0eb086..35bedfce8 100644
--- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/DraftTest.php
+++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/DraftTest.php
@@ -7,6 +7,7 @@ use Illuminate\Support\Facades\DB;
use ProcessMaker\BusinessModel\Cases\Draft;
use ProcessMaker\Model\Application;
use ProcessMaker\Model\Delegation;
+use ProcessMaker\Model\Process;
use ProcessMaker\Model\User;
use Tests\TestCase;
@@ -305,4 +306,339 @@ class DraftTest extends TestCase
$this->assertEquals(1, $res);
}
+
+ /**
+ * It tests the getCountersByProcesses() method without filters
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Draft::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_no_filter()
+ {
+ $process = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ $user = factory(User::class)->create();
+ $application1 = factory(Application::class)->states('draft')->create([
+ 'APP_INIT_USER' => $user->USR_UID,
+ 'APP_CUR_USER' => $user->USR_UID,
+ ]);
+ $application2 = factory(Application::class)->states('draft')->create([
+ 'APP_INIT_USER' => $user->USR_UID,
+ 'APP_CUR_USER' => $user->USR_UID,
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application1->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application1->APP_UID,
+ 'APP_NUMBER' => $application1->APP_NUMBER,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application2->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application2->APP_UID,
+ 'APP_NUMBER' => $application2->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $draft = new Draft();
+ $draft->setUserId($user->USR_ID);
+ $draft->setUserUid($user->USR_ID);
+ $res = $draft->getCountersByProcesses();
+ $this->assertCount(2, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the category filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Draft::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_category()
+ {
+ $process = factory(Process::class)->create([
+ 'CATEGORY_ID' => 1
+ ]);
+ $process2 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 2
+ ]);
+ $user = factory(User::class)->create();
+ $application = factory(Application::class, 5)->states('draft')->create([
+ 'APP_INIT_USER' => $user->USR_UID,
+ 'APP_CUR_USER' => $user->USR_UID,
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[0]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[0]->APP_UID,
+ 'APP_NUMBER' => $application[0]->APP_NUMBER,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[1]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[1]->APP_UID,
+ 'APP_NUMBER' => $application[1]->APP_NUMBER,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[2]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[2]->APP_UID,
+ 'APP_NUMBER' => $application[2]->APP_NUMBER,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[3]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[3]->APP_UID,
+ 'APP_NUMBER' => $application[3]->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[4]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[4]->APP_UID,
+ 'APP_NUMBER' => $application[4]->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $draft = new Draft();
+ $draft->setUserId($user->USR_ID);
+ $draft->setUserUid($user->USR_ID);
+ $res = $draft->getCountersByProcesses(2);
+ $this->assertCount(1, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the top ten filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Draft::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_top_ten()
+ {
+ $process1 = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ $process3 = factory(Process::class)->create();
+ $process4 = factory(Process::class)->create();
+ $process5 = factory(Process::class)->create();
+ $process6 = factory(Process::class)->create();
+ $process7 = factory(Process::class)->create();
+ $process8 = factory(Process::class)->create();
+ $process9 = factory(Process::class)->create();
+ $process10 = factory(Process::class)->create();
+ $process11 = factory(Process::class)->create();
+ $user = factory(User::class)->create();
+ $application = factory(Application::class, 14)->states('draft')->create([
+ 'APP_INIT_USER' => $user->USR_UID,
+ 'APP_CUR_USER' => $user->USR_UID,
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[0]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[0]->APP_UID,
+ 'APP_NUMBER' => $application[0]->APP_NUMBER,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[1]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[1]->APP_UID,
+ 'APP_NUMBER' => $application[1]->APP_NUMBER,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[2]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[2]->APP_UID,
+ 'APP_NUMBER' => $application[2]->APP_NUMBER,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[3]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[3]->APP_UID,
+ 'APP_NUMBER' => $application[3]->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[4]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[4]->APP_UID,
+ 'APP_NUMBER' => $application[4]->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[5]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[5]->APP_UID,
+ 'APP_NUMBER' => $application[5]->APP_NUMBER,
+ 'PRO_ID' => $process3->PRO_ID,
+ 'PRO_UID' => $process3->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[6]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[6]->APP_UID,
+ 'APP_NUMBER' => $application[6]->APP_NUMBER,
+ 'PRO_ID' => $process4->PRO_ID,
+ 'PRO_UID' => $process4->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[7]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[7]->APP_UID,
+ 'APP_NUMBER' => $application[7]->APP_NUMBER,
+ 'PRO_ID' => $process5->PRO_ID,
+ 'PRO_UID' => $process5->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[8]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[8]->APP_UID,
+ 'APP_NUMBER' => $application[8]->APP_NUMBER,
+ 'PRO_ID' => $process6->PRO_ID,
+ 'PRO_UID' => $process6->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[9]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[9]->APP_UID,
+ 'APP_NUMBER' => $application[9]->APP_NUMBER,
+ 'PRO_ID' => $process7->PRO_ID,
+ 'PRO_UID' => $process7->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[10]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[10]->APP_UID,
+ 'APP_NUMBER' => $application[10]->APP_NUMBER,
+ 'PRO_ID' => $process8->PRO_ID,
+ 'PRO_UID' => $process8->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[11]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[11]->APP_UID,
+ 'APP_NUMBER' => $application[11]->APP_NUMBER,
+ 'PRO_ID' => $process9->PRO_ID,
+ 'PRO_UID' => $process9->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[12]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[12]->APP_UID,
+ 'APP_NUMBER' => $application[12]->APP_NUMBER,
+ 'PRO_ID' => $process10->PRO_ID,
+ 'PRO_UID' => $process10->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[13]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[13]->APP_UID,
+ 'APP_NUMBER' => $application[13]->APP_NUMBER,
+ 'PRO_ID' => $process11->PRO_ID,
+ 'PRO_UID' => $process11->PRO_UID
+ ]);
+ $draft = new Draft();
+ $draft->setUserId($user->USR_ID);
+ $draft->setUserUid($user->USR_ID);
+ $res = $draft->getCountersByProcesses(null, true);
+ $this->assertCount(10, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the processes filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Draft::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_processes()
+ {
+ $process = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ $user = factory(User::class)->create();
+ $application = factory(Application::class, 14)->states('draft')->create([
+ 'APP_INIT_USER' => $user->USR_UID,
+ 'APP_CUR_USER' => $user->USR_UID,
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[0]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[0]->APP_UID,
+ 'APP_NUMBER' => $application[0]->APP_NUMBER,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 1,
+ 'USR_UID' => $application[1]->APP_INIT_USER,
+ 'USR_ID' => $user->USR_ID,
+ 'APP_UID' => $application[1]->APP_UID,
+ 'APP_NUMBER' => $application[1]->APP_NUMBER,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $draft = new Draft();
+ $draft->setUserId($user->USR_ID);
+ $draft->setUserUid($user->USR_ID);
+ $res = $draft->getCountersByProcesses(null, false, [$process->PRO_ID]);
+ $this->assertCount(1, $res);
+ }
}
diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InboxTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InboxTest.php
index ea7088534..fa108b20b 100644
--- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InboxTest.php
+++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InboxTest.php
@@ -55,7 +55,7 @@ class InboxTest extends TestCase
public function createMultipleInbox($cases)
{
$user = factory(\ProcessMaker\Model\User::class)->create();
-
+
for ($i = 0; $i < $cases; $i = $i + 1) {
factory(Delegation::class)->states('foreign_keys')->create([
'DEL_THREAD_STATUS' => 'OPEN',
@@ -211,7 +211,6 @@ class InboxTest extends TestCase
$inbox->setTaskId($cases->TAS_ID);
$res = $inbox->getData();
$this->assertNotEmpty($res);
-
}
/**
@@ -298,4 +297,273 @@ class InboxTest extends TestCase
$res = $inbox->getPagingCounters();
$this->assertEquals(1, $res);
}
-}
\ No newline at end of file
+
+ /**
+ * It tests the getCountersByProcesses() method without filters
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Inbox::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_no_filter()
+ {
+ $user = factory(User::class)->create();
+ $process = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $inbox = new Inbox();
+ $inbox->setUserId($user->USR_ID);
+ $inbox->setUserUid($user->USR_UID);
+ $res = $inbox->getCountersByProcesses();
+ $this->assertCount(2, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the category filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Inbox::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_category()
+ {
+ $user = factory(User::class)->create();
+ $process = factory(Process::class)->create([
+ 'CATEGORY_ID' => 1
+ ]);
+ $process2 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 2
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $inbox = new Inbox();
+ $inbox->setUserId($user->USR_ID);
+ $inbox->setUserUid($user->USR_UID);
+ $res = $inbox->getCountersByProcesses(2);
+ $this->assertCount(1, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the top ten filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Inbox::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_top_ten()
+ {
+ $user = factory(User::class)->create();
+ $process1 = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ $process3 = factory(Process::class)->create();
+ $process4 = factory(Process::class)->create();
+ $process5 = factory(Process::class)->create();
+ $process6 = factory(Process::class)->create();
+ $process7 = factory(Process::class)->create();
+ $process8 = factory(Process::class)->create();
+ $process9 = factory(Process::class)->create();
+ $process10 = factory(Process::class)->create();
+ $process11 = factory(Process::class)->create();
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process3->PRO_ID,
+ 'PRO_UID' => $process3->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process4->PRO_ID,
+ 'PRO_UID' => $process4->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process5->PRO_ID,
+ 'PRO_UID' => $process5->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process6->PRO_ID,
+ 'PRO_UID' => $process6->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process7->PRO_ID,
+ 'PRO_UID' => $process7->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process8->PRO_ID,
+ 'PRO_UID' => $process8->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process9->PRO_ID,
+ 'PRO_UID' => $process9->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process10->PRO_ID,
+ 'PRO_UID' => $process10->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process11->PRO_ID,
+ 'PRO_UID' => $process11->PRO_UID
+ ]);
+ $inbox = new Inbox();
+ $inbox->setUserId($user->USR_ID);
+ $inbox->setUserUid($user->USR_UID);
+ $res = $inbox->getCountersByProcesses(null, true);
+ $this->assertCount(10, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the processes filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Inbox::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_processes()
+ {
+ $user = factory(User::class)->create();
+ $process = factory(Process::class)->create();
+ $process2 = factory(Process::class)->create();
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process->PRO_ID,
+ 'PRO_UID' => $process->PRO_UID
+ ]);
+ factory(Delegation::class)->states('foreign_keys')->create([
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'DEL_INDEX' => 2,
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'PRO_UID' => $process2->PRO_UID
+ ]);
+ $inbox = new Inbox();
+ $inbox->setUserId($user->USR_ID);
+ $inbox->setUserUid($user->USR_UID);
+ $res = $inbox->getCountersByProcesses(null, false, [$process->PRO_ID]);
+ $this->assertCount(1, $res);
+ }
+}
diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/PausedTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/PausedTest.php
index 354eb2b3a..81888cdad 100644
--- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/PausedTest.php
+++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/PausedTest.php
@@ -136,13 +136,15 @@ class PausedTest extends TestCase
* @param int
* @return object
*/
- public function createMultiplePaused($cases)
+ public function createMultiplePaused($cases, $category = 1, $user = null)
{
- $user = factory(\ProcessMaker\Model\User::class)->create();
+ if (is_null($user)) {
+ $user = factory(User::class)->create();
+ }
for ($i = 0; $i < $cases; $i = $i + 1) {
$process1 = factory(Process::class)->create(
- ['PRO_CATEGORY' => '1']
+ ['PRO_CATEGORY' => 1, 'CATEGORY_ID' => $category]
);
$task = factory(Task::class)->create([
@@ -386,4 +388,116 @@ class PausedTest extends TestCase
$res = $paused->getPagingCounters();
$this->assertEquals(1, $res);
}
+
+ /**
+ * It tests the getCountersByProcesses() method without filters
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Paused::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_no_filter()
+ {
+ $cases = $this->createMultiplePaused(2);
+ $paused = new Paused();
+ $paused->setUserId($cases->USR_ID);
+ $paused->setUserUid($cases->USR_ID);
+ $res = $paused->getCountersByProcesses();
+ $this->assertCount(2, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the category filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Paused::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_category()
+ {
+ $user = factory(User::class)->create();
+ $this->createMultiplePaused(3, 2, $user);
+ $this->createMultiplePaused(2, 3, $user);
+ $paused = new Paused();
+ $paused->setUserId($user->USR_ID);
+ $paused->setUserUid($user->USR_ID);
+ $res = $paused->getCountersByProcesses(2);
+ $this->assertCount(3, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the top ten filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Paused::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_top_ten()
+ {
+ $user = factory(User::class)->create();
+ $this->createMultiplePaused(20, 2, $user);
+ $paused = new Paused();
+ $paused->setUserId($user->USR_ID);
+ $paused->setUserUid($user->USR_UID);
+ $res = $paused->getCountersByProcesses(null, true);
+ $this->assertCount(10, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the processes filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Paused::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_processes_filter()
+ {
+ $user = factory(User::class)->create();
+ $process1 = factory(Process::class)->create();
+
+ $task = factory(Task::class)->create([
+ 'TAS_ASSIGN_TYPE' => '',
+ 'TAS_GROUP_VARIABLE' => '',
+ 'PRO_UID' => $process1->PRO_UID,
+ 'TAS_TYPE' => 'NORMAL'
+ ]);
+
+ $application1 = factory(Application::class)->create();
+
+ factory(Delegation::class)->create([
+ 'APP_UID' => $application1->APP_UID,
+ 'APP_NUMBER' => $application1->APP_NUMBER,
+ 'TAS_ID' => $task->TAS_ID,
+ 'DEL_THREAD_STATUS' => 'CLOSED',
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID,
+ 'DEL_PREVIOUS' => 0,
+ 'DEL_INDEX' => 1
+ ]);
+ $delegation1 = factory(Delegation::class)->create([
+ 'APP_UID' => $application1->APP_UID,
+ 'APP_NUMBER' => $application1->APP_NUMBER,
+ 'TAS_ID' => $task->TAS_ID,
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'USR_UID' => $user->USR_UID,
+ 'USR_ID' => $user->USR_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'PRO_UID' => $process1->PRO_UID,
+ 'DEL_PREVIOUS' => 1,
+ 'DEL_INDEX' => 2
+ ]);
+
+ factory(AppDelay::class)->create([
+ 'APP_DELEGATION_USER' => $user->USR_UID,
+ 'PRO_UID' => $process1->PRO_UID,
+ 'APP_NUMBER' => $delegation1->APP_NUMBER,
+ 'APP_DEL_INDEX' => $delegation1->DEL_INDEX,
+ 'APP_DISABLE_ACTION_USER' => 0,
+ 'APP_TYPE' => 'PAUSE'
+ ]);
+ $this->createMultiplePaused(3, 2, $user);
+ $paused = new Paused();
+ $paused->setUserId($user->USR_ID);
+ $paused->setUserUid($user->USR_UID);
+ $res = $paused->getCountersByProcesses(null, false, [$process1->PRO_ID]);
+ $this->assertCount(1, $res);
+ }
}
diff --git a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/UnassignedTest.php b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/UnassignedTest.php
index 3c849e55d..d972307cd 100644
--- a/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/UnassignedTest.php
+++ b/tests/unit/workflow/engine/src/ProcessMaker/BusinessModel/Cases/UnassignedTest.php
@@ -88,7 +88,6 @@ class UnassignedTest extends TestCase
'taskUser' => $taskUser,
'delegation' => $delegation
];
-
}
/**
@@ -135,7 +134,7 @@ class UnassignedTest extends TestCase
$selfValueGroup = factory(AppAssignSelfServiceValueGroup::class)->create([
'ID' => $appSelfValueUser->ID,
'GRP_UID' => $user->USR_UID,
- 'ASSIGNEE_ID' => ($userAssignee) ? $user->USR_ID: $group->GRP_ID,
+ 'ASSIGNEE_ID' => ($userAssignee) ? $user->USR_ID : $group->GRP_ID,
'ASSIGNEE_TYPE' => $relation
]);
//Create the register in delegation relate to self-service
@@ -418,4 +417,166 @@ class UnassignedTest extends TestCase
$res = $unassigned->getPagingCounters();
$this->assertNotEmpty($res);
}
-}
\ No newline at end of file
+
+ /**
+ * It tests the getCountersByProcesses() method without filters
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Unassigned::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_no_filter()
+ {
+ $cases = $this->createMultipleUnassigned(3);
+ $unassigned = new Unassigned();
+ $unassigned->setUserId($cases->USR_ID);
+ $unassigned->setUserUid($cases->USR_UID);
+ $res = $unassigned->getCountersByProcesses();
+ $this->assertCount(3, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the category filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Unassigned::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_category()
+ {
+ $user = factory(User::class)->create();
+ $process1 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 2
+ ]);
+ $process2 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 3
+ ]);
+ $application = factory(Application::class)->create([
+ 'APP_STATUS_ID' => 2
+ ]);
+ $task = factory(Task::class)->create([
+ 'TAS_ASSIGN_TYPE' => 'SELF_SERVICE',
+ 'TAS_GROUP_VARIABLE' => '',
+ 'PRO_UID' => $process1->PRO_UID,
+ 'PRO_ID' => $process1->PRO_ID,
+ ]);
+ factory(TaskUser::class)->create([
+ 'TAS_UID' => $task->TAS_UID,
+ 'USR_UID' => $user->USR_UID,
+ 'TU_RELATION' => 1,
+ 'TU_TYPE' => 1
+ ]);
+ factory(Delegation::class)->create([
+ 'APP_NUMBER' => $application->APP_NUMBER,
+ 'TAS_ID' => $task->TAS_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'USR_ID' => 0,
+ 'DEL_DELEGATE_DATE' => date('Y-m-d H:m:s', strtotime("-1 year"))
+ ]);
+ $task2 = factory(Task::class)->create([
+ 'TAS_ASSIGN_TYPE' => 'SELF_SERVICE',
+ 'TAS_GROUP_VARIABLE' => '',
+ 'PRO_UID' => $process2->PRO_UID,
+ 'PRO_ID' => $process2->PRO_ID,
+ ]);
+ factory(TaskUser::class)->create([
+ 'TAS_UID' => $task2->TAS_UID,
+ 'USR_UID' => $user->USR_UID,
+ 'TU_RELATION' => 1,
+ 'TU_TYPE' => 1
+ ]);
+ factory(Delegation::class)->create([
+ 'APP_NUMBER' => $application->APP_NUMBER,
+ 'TAS_ID' => $task2->TAS_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'USR_ID' => 0,
+ 'DEL_DELEGATE_DATE' => date('Y-m-d H:m:s', strtotime("-2 year"))
+ ]);
+ $unassigned = new Unassigned();
+ $unassigned->setUserId($user->USR_ID);
+ $unassigned->setUserUid($user->USR_UID);
+ $res = $unassigned->getCountersByProcesses(2);
+ $this->assertCount(1, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the top ten filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Unassigned::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_top_ten()
+ {
+ $cases = $this->createMultipleUnassigned(20);
+ $unassigned = new Unassigned();
+ $unassigned->setUserId($cases->USR_ID);
+ $unassigned->setUserUid($cases->USR_UID);
+ $res = $unassigned->getCountersByProcesses(null, true);
+ $this->assertCount(10, $res);
+ }
+
+ /**
+ * It tests the getCountersByProcesses() method with the processes filter
+ *
+ * @covers \ProcessMaker\BusinessModel\Cases\Unassigned::getCountersByProcesses()
+ * @test
+ */
+ public function it_should_test_get_counters_by_processes_method_processes()
+ {
+ $user = factory(User::class)->create();
+ $process1 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 2
+ ]);
+ $process2 = factory(Process::class)->create([
+ 'CATEGORY_ID' => 3
+ ]);
+ $application = factory(Application::class)->create([
+ 'APP_STATUS_ID' => 2
+ ]);
+ $task = factory(Task::class)->create([
+ 'TAS_ASSIGN_TYPE' => 'SELF_SERVICE',
+ 'TAS_GROUP_VARIABLE' => '',
+ 'PRO_UID' => $process1->PRO_UID,
+ 'PRO_ID' => $process1->PRO_ID,
+ ]);
+ factory(TaskUser::class)->create([
+ 'TAS_UID' => $task->TAS_UID,
+ 'USR_UID' => $user->USR_UID,
+ 'TU_RELATION' => 1,
+ 'TU_TYPE' => 1
+ ]);
+ factory(Delegation::class)->create([
+ 'APP_NUMBER' => $application->APP_NUMBER,
+ 'TAS_ID' => $task->TAS_ID,
+ 'PRO_ID' => $process1->PRO_ID,
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'USR_ID' => 0,
+ 'DEL_DELEGATE_DATE' => date('Y-m-d H:m:s', strtotime("-1 year"))
+ ]);
+ $task2 = factory(Task::class)->create([
+ 'TAS_ASSIGN_TYPE' => 'SELF_SERVICE',
+ 'TAS_GROUP_VARIABLE' => '',
+ 'PRO_UID' => $process2->PRO_UID,
+ 'PRO_ID' => $process2->PRO_ID,
+ ]);
+ factory(TaskUser::class)->create([
+ 'TAS_UID' => $task2->TAS_UID,
+ 'USR_UID' => $user->USR_UID,
+ 'TU_RELATION' => 1,
+ 'TU_TYPE' => 1
+ ]);
+ factory(Delegation::class)->create([
+ 'APP_NUMBER' => $application->APP_NUMBER,
+ 'TAS_ID' => $task2->TAS_ID,
+ 'PRO_ID' => $process2->PRO_ID,
+ 'DEL_THREAD_STATUS' => 'OPEN',
+ 'USR_ID' => 0,
+ 'DEL_DELEGATE_DATE' => date('Y-m-d H:m:s', strtotime("-2 year"))
+ ]);
+ $unassigned = new Unassigned();
+ $unassigned->setUserId($user->USR_ID);
+ $unassigned->setUserUid($user->USR_UID);
+ $res = $unassigned->getCountersByProcesses(null, false, [$process1->PRO_ID]);
+ $this->assertCount(1, $res);
+ }
+}
diff --git a/workflow/engine/methods/setup/upgrade_RBAC.php b/workflow/engine/methods/setup/upgrade_RBAC.php
index 372af5d9d..dd86dd6ed 100644
--- a/workflow/engine/methods/setup/upgrade_RBAC.php
+++ b/workflow/engine/methods/setup/upgrade_RBAC.php
@@ -38,6 +38,7 @@ $aRequiredPermissions = array('PM_LOGIN',
'PM_EDITPERSONALINFO',
'PM_FOLDERS_VIEW',
'PM_FOLDERS_ADD_FOLDER',
- 'PM_FOLDERS_ADD_FILE'
+ 'PM_FOLDERS_ADD_FILE',
+ 'TASK_METRICS_VIEW'
);
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php
index 52afbf0f6..e72b28a61 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/AbstractCases.php
@@ -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();
+ }
}
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php
index e12525fc8..9cdbb0d85 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/Paused.php
@@ -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()
diff --git a/workflow/engine/src/ProcessMaker/Model/Delegation.php b/workflow/engine/src/ProcessMaker/Model/Delegation.php
index 16cf27c25..eca30abea 100644
--- a/workflow/engine/src/ProcessMaker/Model/Delegation.php
+++ b/workflow/engine/src/ProcessMaker/Model/Delegation.php
@@ -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
*
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php b/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php
new file mode 100644
index 000000000..aeb39f083
--- /dev/null
+++ b/workflow/engine/src/ProcessMaker/Services/Api/Metrics.php
@@ -0,0 +1,69 @@
+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());
+ }
+ }
+}