Merged in feature/PMCORE-2389-B (pull request #7593)

PMCORE-2389

Approved-by: Julio Cesar Laura Avendaño <contact@julio-laura.com>
This commit is contained in:
Julio Cesar Laura Avendaño
2020-12-08 19:26:20 +00:00
3 changed files with 58 additions and 0 deletions

View File

@@ -101,6 +101,29 @@ class Filter
return $filter;
}
/**
* Update a filter of the advanced search for the current user
*
* @param string $userUid
* @param string $filterUid
* @param string $name
* @param object $filters
*/
public static function update($userUid, $filterUid, $name, $filters)
{
// Build object to serialize and save
$filter = new stdClass();
$filter->id = $filterUid;
$filter->name = $name;
$filter->filters = $filters;
// Update filter
Configuration::query()->where('CFG_UID', '=', self::ADVANCED_SEARCH_FILTER_KEY)
->where('OBJ_UID', '=', $filterUid)
->where('USR_UID', '=', $userUid)
->update(['CFG_VALUE' => json_encode($filter)]);
}
/**
* Delete a specific filter by filter Uid
*

View File

@@ -14,4 +14,6 @@ class Configuration extends Model
public $timestamps = false;
public $incrementing = false;
protected $fillable = ['CFG_UID', 'OBJ_UID', 'CFG_VALUE', 'PRO_UID', 'USR_UID', 'APP_UID'];
}

View File

@@ -1537,6 +1537,39 @@ class Cases extends Api
}
}
/**
* Update a filter of the advanced search for the current user
*
* @url PUT /advanced-search/filter/:filterUid
*
* @param string $filterUid {@min 32}{@max 32}
* @param string $name
* @param string $filters
*
* @throws RestException
*/
public function doPutAdvancedSearchFilter($filterUid, $name, $filters)
{
try {
// Create JSON object if is a serialized string
$filters = is_string($filters) ? json_decode($filters) : $filters;
// Get requested filter
$filter = Filter::getByUid($this->getUserId(), $filterUid);
// Update the requested filter if exists
if (!is_null($filter)) {
Filter::update($this->getUserId(), $filterUid, $name, $filters);
}
} catch (Exception $e) {
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
}
// If not exists the requested filter throw an 404 error
if (is_null($filter)) {
throw new RestException(404, "Filter with Uid '{$filterUid}'.");
}
}
/**
* Delete a specific filter of the advanced search for the current user
*