PMCORE-3129
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Model factory for a process category
|
||||
*/
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\ProcessMaker\Model\ProcessCategory::class, function (Faker $faker) {
|
||||
return [
|
||||
'CATEGORY_UID' => G::generateUniqueID(),
|
||||
'CATEGORY_ID' => $faker->randomNumber(8),
|
||||
'CATEGORY_PARENT' => '',
|
||||
'CATEGORY_NAME' => $faker->sentence(5),
|
||||
'CATEGORY_ICON' => '',
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\unit\workflow\engine\src\ProcessMaker\Model;
|
||||
|
||||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
use ProcessMaker\Model\ProcessCategory;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class ProcessTest
|
||||
*
|
||||
* @coversDefaultClass \ProcessMaker\Model\ProcessCategory
|
||||
*/
|
||||
class ProcessCategoryTest extends TestCase
|
||||
{
|
||||
use DatabaseTransactions;
|
||||
|
||||
/**
|
||||
* Call the setUp parent method
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
parent::setUp();
|
||||
ProcessCategory::query()->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the getProcessCategories method without paremeters
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_tests_get_process_categories_method_without_paremeters()
|
||||
{
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 1
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 2
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 3
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 4
|
||||
]);
|
||||
$result = ProcessCategory::getProcessCategories();
|
||||
|
||||
$this->assertCount(4, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the getProcessCategories method filtered by name
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_tests_get_process_categories_method_filter_by_name()
|
||||
{
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 1,
|
||||
'CATEGORY_NAME' => 'Category1'
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 2,
|
||||
'CATEGORY_NAME' => 'Category2'
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 3,
|
||||
'CATEGORY_NAME' => 'Category3'
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 4,
|
||||
'CATEGORY_NAME' => 'Category4'
|
||||
]);
|
||||
$result = ProcessCategory::getProcessCategories('1');
|
||||
|
||||
$this->assertCount(1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the getProcessCategories method with start and limit parameters
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_tests_get_process_categories_method_with_start_limit()
|
||||
{
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 1,
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 2,
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 3,
|
||||
]);
|
||||
factory(ProcessCategory::class)->create([
|
||||
'CATEGORY_ID' => 4,
|
||||
]);
|
||||
$result = ProcessCategory::getProcessCategories(null, 1, 3);
|
||||
|
||||
$this->assertCount(3, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the getCategoryId method
|
||||
*
|
||||
* @test
|
||||
*/
|
||||
public function it_tests_get_category_id_method()
|
||||
{
|
||||
$processCategory = factory(ProcessCategory::class)->create();
|
||||
$result = ProcessCategory::getCategoryId($processCategory->CATEGORY_UID);
|
||||
|
||||
$this->assertEquals($processCategory->CATEGORY_ID, $result);
|
||||
}
|
||||
}
|
||||
@@ -143,6 +143,7 @@ class Process extends BaseProcess
|
||||
$this->setProShowDelegate('');
|
||||
$this->setProShowDynaform('');
|
||||
$this->setProCategory((isset($aData["PRO_CATEGORY"]))? $aData["PRO_CATEGORY"]: "");
|
||||
$this->setCategoryId((isset($aData["CATEGORY_ID"])) ? $aData["CATEGORY_ID"]: 0);
|
||||
$this->setProSubCategory('');
|
||||
$this->setProIndustry('');
|
||||
$this->setProCreateDate(date("Y-m-d H:i:s"));
|
||||
|
||||
@@ -17,6 +17,18 @@ class ProcessCategory extends Model
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Scope a query to specific category name
|
||||
*
|
||||
* @param \Illuminate\Database\Eloquent\Builder $query
|
||||
* @param string $name
|
||||
* @return \Illuminate\Database\Eloquent\Builder
|
||||
*/
|
||||
public function scopeCategoryName($query, $name)
|
||||
{
|
||||
return $query->where('CATEGORY_NAME', 'LIKE', "%{$name}%");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the categories
|
||||
*
|
||||
@@ -38,4 +50,46 @@ class ProcessCategory extends Model
|
||||
|
||||
return $query->get()->values()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the process categories
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $start
|
||||
* @param int $limit
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @see ProcessMaker\Services\Api\Home::getCategories()
|
||||
*/
|
||||
public static function getProcessCategories($name = null, $start = null, $limit = null)
|
||||
{
|
||||
$query = ProcessCategory::query()->select(['CATEGORY_ID', 'CATEGORY_NAME']);
|
||||
|
||||
if (!is_null($name)) {
|
||||
$query->categoryName($name);
|
||||
}
|
||||
|
||||
if (!is_null($start) && !is_null($limit)) {
|
||||
$query->offset($start)->limit($limit);
|
||||
}
|
||||
|
||||
return $query->get()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get category Id
|
||||
*
|
||||
* @param string $categoryUid
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function getCategoryId($categoryUid)
|
||||
{
|
||||
$query = ProcessCategory::query()->select(['CATEGORY_ID']);
|
||||
$query->where('CATEGORY_UID', $categoryUid);
|
||||
if ($query->first()) {
|
||||
return $query->first()->CATEGORY_ID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ use Task as ClassesTask;
|
||||
use Route;
|
||||
use RoutePeer;
|
||||
|
||||
use ProcessMaker\Model\ProcessCategory;
|
||||
use ProcessMaker\Util\Common;
|
||||
use ProcessMaker\Exception;
|
||||
use ProcessMaker\Util;
|
||||
@@ -62,6 +63,8 @@ class Workflow extends Handler
|
||||
$data['USR_UID'] = array_key_exists('PRO_CREATE_USER', $data) ? $data['PRO_CREATE_USER'] : null;
|
||||
$data['PRO_TITLE'] = array_key_exists('PRO_TITLE', $data) ? trim($data['PRO_TITLE']) : "";
|
||||
$data['PRO_CATEGORY'] = array_key_exists('PRO_CATEGORY', $data) ? $data['PRO_CATEGORY'] : "";
|
||||
$categoryId = ProcessCategory::getCategoryId($data['PRO_CATEGORY']);
|
||||
$data['CATEGORY_ID'] = !is_null($categoryId) ? $categoryId : 0;
|
||||
|
||||
try {
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ use ProcessMaker\BusinessModel\Cases\Supervising;
|
||||
use ProcessMaker\BusinessModel\Cases\Unassigned;
|
||||
use ProcessMaker\Model\Delegation;
|
||||
use ProcessMaker\Model\Process;
|
||||
use ProcessMaker\Model\ProcessCategory;
|
||||
use ProcessMaker\Model\User;
|
||||
use ProcessMaker\Model\UserConfig;
|
||||
use ProcessMaker\Model\Task;
|
||||
@@ -811,4 +812,30 @@ class Home extends Api
|
||||
{
|
||||
return UserConfig::deleteSetting($id, $name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all process categories
|
||||
*
|
||||
* @url GET /categories
|
||||
*
|
||||
* @param string $name
|
||||
* @param int $start
|
||||
* @param int $limit
|
||||
*
|
||||
* @return array
|
||||
*
|
||||
* @throws RestException
|
||||
*
|
||||
* @access protected
|
||||
* @class AccessControl {@permission PM_CASES}
|
||||
*/
|
||||
public function getCategories($name = null, $start = null, $limit = null)
|
||||
{
|
||||
try {
|
||||
$categories = ProcessCategory::getProcessCategories($name, $start, $limit);
|
||||
return $categories;
|
||||
} catch (Exception $e) {
|
||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user