PMCORE-3129

This commit is contained in:
Andrea Adamczyk
2021-07-08 09:40:57 -04:00
parent bc169bcd77
commit ef03ffcdd3
6 changed files with 204 additions and 1 deletions

View File

@@ -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"));

View File

@@ -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
*
@@ -27,7 +39,7 @@ class ProcessCategory extends Model
* @see ProcessProxy::categoriesList()
* @link https://wiki.processmaker.com/3.0/Process_Categories
*/
public static function getCategories( $dir = 'ASC')
public static function getCategories($dir = 'ASC')
{
$query = ProcessCategory::query()
->select([
@@ -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;
}
}
}

View File

@@ -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 {

View File

@@ -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());
}
}
}