PMCORE-2537
This commit is contained in:
@@ -186,4 +186,47 @@ class TaskTest extends TestCase
|
|||||||
$result = $tas->taskCaseTitle($task->TAS_UID);
|
$result = $tas->taskCaseTitle($task->TAS_UID);
|
||||||
$this->assertNotEmpty($result);
|
$this->assertNotEmpty($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It test get tasks for the new home view
|
||||||
|
*
|
||||||
|
* @covers \ProcessMaker\Model\Task::getTasksForHome()
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_should_test_get_tasks_for_home_method()
|
||||||
|
{
|
||||||
|
Task::truncate();
|
||||||
|
Process::truncate();
|
||||||
|
|
||||||
|
$process1 = factory(Process::class)->create();
|
||||||
|
$process2 = factory(Process::class)->create();
|
||||||
|
|
||||||
|
factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process1->PRO_UID,
|
||||||
|
'TAS_TITLE' => 'Task 1'
|
||||||
|
]);
|
||||||
|
factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process1->PRO_UID,
|
||||||
|
'TAS_TITLE' => 'Task 2'
|
||||||
|
]);
|
||||||
|
factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process1->PRO_UID,
|
||||||
|
'TAS_TITLE' => 'Task 3'
|
||||||
|
]);
|
||||||
|
|
||||||
|
factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process2->PRO_UID,
|
||||||
|
'TAS_TITLE' => 'Task 1'
|
||||||
|
]);
|
||||||
|
factory(Task::class)->create([
|
||||||
|
'PRO_UID' => $process2->PRO_UID,
|
||||||
|
'TAS_TITLE' => 'Task 2'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->assertCount(5, Task::getTasksForHome());
|
||||||
|
$this->assertCount(2, Task::getTasksForHome('Task 1'));
|
||||||
|
$this->assertCount(3, Task::getTasksForHome(null, $process1->PRO_ID));
|
||||||
|
$this->assertCount(5, Task::getTasksForHome(null, null, null, 2));
|
||||||
|
$this->assertCount(1, Task::getTasksForHome(null, null, 2, 1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -57,6 +57,36 @@ class Task extends Model
|
|||||||
->where('TAS_GROUP_VARIABLE', '=', '');
|
->where('TAS_GROUP_VARIABLE', '=', '');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scope a query to specific title
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||||
|
* @param string $title
|
||||||
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
|
*/
|
||||||
|
public function scopeTitle($query, $title)
|
||||||
|
{
|
||||||
|
return $query->where('TAS_TITLE', 'LIKE', "%{$title}%");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Scope a query to include a specific process
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||||
|
* @param string $category
|
||||||
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
|
* @todo Auto populate the PRO_ID in TASK table
|
||||||
|
*/
|
||||||
|
public function scopeProcessId($query, $proId)
|
||||||
|
{
|
||||||
|
$query->join('PROCESS', function ($join) use ($proId) {
|
||||||
|
$join->on('TASK.PRO_UID', '=', 'PROCESS.PRO_UID')
|
||||||
|
->where('PROCESS.PRO_ID', '=', $proId);
|
||||||
|
});
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the title of the task
|
* Get the title of the task
|
||||||
*
|
*
|
||||||
@@ -191,4 +221,42 @@ class Task extends Model
|
|||||||
|
|
||||||
return $query->get()->values()->toArray()['0']['TAS_DEF_TITLE'];
|
return $query->get()->values()->toArray()['0']['TAS_DEF_TITLE'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all tasks, paged optionally, can be sent a string to filter results by "TAS_TITLE"
|
||||||
|
*
|
||||||
|
* @param string $text
|
||||||
|
* @param string $proId
|
||||||
|
* @param int $offset
|
||||||
|
* @param int $limit
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getTasksForHome($text = null, $proId = null, $offset = null, $limit = null)
|
||||||
|
{
|
||||||
|
// Get base query
|
||||||
|
$query = Task::query()->select(['TAS_ID', 'TAS_TITLE']);
|
||||||
|
|
||||||
|
// Set "TAS_TITLE" condition if is sent
|
||||||
|
if (!is_null($text)) {
|
||||||
|
$query->title($text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set "PRO_ID" condition if is sent
|
||||||
|
if (!is_null($proId)) {
|
||||||
|
$query->processId($proId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set pagination if offset and limit are sent
|
||||||
|
if (!is_null($offset) && !is_null($limit)) {
|
||||||
|
$query->offset($offset);
|
||||||
|
$query->limit($limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Order by "TAS_TITLE"
|
||||||
|
$query->orderBy('TAS_TITLE');
|
||||||
|
|
||||||
|
// Return tasks
|
||||||
|
return $query->get()->toArray();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ use ProcessMaker\BusinessModel\Cases\Unassigned;
|
|||||||
use ProcessMaker\Model\Delegation;
|
use ProcessMaker\Model\Delegation;
|
||||||
use ProcessMaker\Model\Process;
|
use ProcessMaker\Model\Process;
|
||||||
use ProcessMaker\Model\User;
|
use ProcessMaker\Model\User;
|
||||||
|
use ProcessMaker\Model\Task;
|
||||||
use ProcessMaker\Services\Api;
|
use ProcessMaker\Services\Api;
|
||||||
use RBAC;
|
use RBAC;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
@@ -662,4 +663,31 @@ class Home extends Api
|
|||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all tasks, paged optionally, can be sent a text to filter results by "TAS_TITLE"
|
||||||
|
*
|
||||||
|
* @url GET /tasks
|
||||||
|
*
|
||||||
|
* @param string $text
|
||||||
|
* @param string $proId
|
||||||
|
* @param int $offset
|
||||||
|
* @param int $limit
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*
|
||||||
|
* @throws Exception
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
* @class AccessControl {@permission PM_CASES}
|
||||||
|
*/
|
||||||
|
public function getTasks($text = null, $proId = null, $offset = null, $limit = null)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$tasks = Task::getTasksForHome($text, $proId, $offset, $limit);
|
||||||
|
return $tasks;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user