Include initial transform to transform results to desired necessity. Change proxyCaseList to utilize Delegation search.
This commit is contained in:
committed by
Paula Quispe
parent
2bf175ac85
commit
e79503f590
@@ -1,4 +1,9 @@
|
||||
<?php
|
||||
use ProcessMaker\Model\Delegation;
|
||||
|
||||
/**
|
||||
* Authentication check for session. If not logged in, return json error
|
||||
*/
|
||||
if (!isset($_SESSION['USER_LOGGED'])) {
|
||||
$responseObject = new stdclass();
|
||||
$responseObject->error = G::LoadTranslation('ID_LOGIN_AGAIN');
|
||||
@@ -9,31 +14,59 @@ if (!isset($_SESSION['USER_LOGGED'])) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Do input filtering, although filtering should be done on the frontend rendering, not here
|
||||
*/
|
||||
$filter = new InputFilter();
|
||||
$_GET = $filter->xssFilterHard($_GET);
|
||||
$_REQUEST = $filter->xssFilterHard($_REQUEST);
|
||||
$_SESSION['USER_LOGGED'] = $filter->xssFilterHard($_SESSION['USER_LOGGED']);
|
||||
|
||||
//Getting the extJs parameters
|
||||
// Callback in the UI to utilize
|
||||
$callback = isset($_REQUEST["callback"]) ? $_REQUEST["callback"] : "stcCallback1001";
|
||||
//This default value was defined in casesList.js
|
||||
$dir = isset($_REQUEST["dir"]) ? $_REQUEST["dir"] : "DESC";
|
||||
//This default value was defined in casesList.js
|
||||
|
||||
// Sort column
|
||||
$sort = isset($_REQUEST["sort"]) ? $_REQUEST["sort"] : "APP_NUMBER";
|
||||
// Sort direction
|
||||
$dir = isset($_REQUEST["dir"]) ? $_REQUEST["dir"] : "DESC";
|
||||
|
||||
// Pagination control
|
||||
$start = !empty($_REQUEST["start"]) ? $_REQUEST["start"] : 0;
|
||||
$limit = !empty($_REQUEST["limit"]) ? $_REQUEST["limit"] : 25;
|
||||
|
||||
// Our search filter
|
||||
$filter = isset($_REQUEST["filter"]) ? $_REQUEST["filter"] : "";
|
||||
|
||||
// What process
|
||||
$process = isset($_REQUEST["process"]) ? $_REQUEST["process"] : "";
|
||||
|
||||
// What category
|
||||
$category = isset($_REQUEST["category"]) ? $_REQUEST["category"] : "";
|
||||
|
||||
// What status
|
||||
$status = isset($_REQUEST["status"]) ? strtoupper($_REQUEST["status"]) : "";
|
||||
$filterStatus = isset($_REQUEST["filterStatus"]) ? strtoupper($_REQUEST["filterStatus"]) : "";
|
||||
|
||||
// What user
|
||||
$user = isset($_REQUEST["user"]) ? $_REQUEST["user"] : "";
|
||||
|
||||
// What search???
|
||||
$search = isset($_REQUEST["search"]) ? $_REQUEST["search"] : "";
|
||||
|
||||
// What kind of action
|
||||
$action = isset($_GET["action"]) ? $_GET["action"] : (isset($_REQUEST["action"]) ? $_REQUEST["action"] : "todo");
|
||||
|
||||
// What kind of search
|
||||
$type = isset($_GET["type"]) ? $_GET["type"] : (isset($_REQUEST["type"]) ? $_REQUEST["type"] : "extjs");
|
||||
|
||||
// Date ranges
|
||||
$dateFrom = isset($_REQUEST["dateFrom"]) ? substr($_REQUEST["dateFrom"], 0, 10) : "";
|
||||
$dateTo = isset($_REQUEST["dateTo"]) ? substr($_REQUEST["dateTo"], 0, 10) : "";
|
||||
|
||||
// First? No idea
|
||||
$first = isset($_REQUEST["first"]) ? true : false;
|
||||
|
||||
|
||||
$openApplicationUid = (isset($_REQUEST['openApplicationUid']) && $_REQUEST['openApplicationUid'] != '') ?
|
||||
$_REQUEST['openApplicationUid'] : null;
|
||||
$search = (!is_null($openApplicationUid)) ? $openApplicationUid : $search;
|
||||
@@ -67,10 +100,10 @@ try {
|
||||
break;
|
||||
}
|
||||
|
||||
$apps = new Applications();
|
||||
//$apps = new Applications();
|
||||
|
||||
if ($action == 'search') {
|
||||
$data = $apps->searchAll(
|
||||
$data = Delegation::search(
|
||||
$userUid,
|
||||
$start,
|
||||
$limit,
|
||||
@@ -85,7 +118,7 @@ try {
|
||||
$columnSearch
|
||||
);
|
||||
} else {
|
||||
$data = $apps->getAll(
|
||||
$data = Delegation::search(
|
||||
$userUid,
|
||||
$start,
|
||||
$limit,
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
namespace ProcessMaker\Model;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use G;
|
||||
|
||||
class Delegation extends Model
|
||||
{
|
||||
protected $table = "APP_DELEGATION";
|
||||
|
||||
// We don't have our standard timestamp columns
|
||||
protected $timestamps = false;
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* Returns the application this delegation belongs to
|
||||
@@ -42,4 +43,137 @@ class Delegation extends Model
|
||||
{
|
||||
return $this->belongsTo(Process::class, 'PRO_ID', 'PRO_ID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for delegations which match certain criteria
|
||||
*
|
||||
* The query is related to advanced search with different filters
|
||||
* We can search by process, status of case, category of process, users, delegate date from and to
|
||||
*
|
||||
* @param string $userUid
|
||||
* @param integer $start for the pagination
|
||||
* @param integer $limit for the pagination
|
||||
* @param string $search
|
||||
* @param integer $process the pro_id
|
||||
* @param integer $status of the case
|
||||
* @param string $dir if the order is DESC or ASC
|
||||
* @param string $sort name of column by sort, can be:
|
||||
* [APP_NUMBER, APP_TITLE, APP_PRO_TITLE, APP_TAS_TITLE, APP_CURRENT_USER, APP_UPDATE_DATE, DEL_DELEGATE_DATE, DEL_TASK_DUE_DATE, APP_STATUS_LABEL]
|
||||
* @param string $category uid for the process
|
||||
* @param date $dateFrom
|
||||
* @param date $dateTo
|
||||
* @param string $filterBy name of column for a specific search, can be: [APP_NUMBER, APP_TITLE, TAS_TITLE]
|
||||
* @return array $result result of the query
|
||||
*/
|
||||
|
||||
public static function search(
|
||||
$userUid,
|
||||
$start = null,
|
||||
$limit = null,
|
||||
$search = null,
|
||||
$process = null,
|
||||
$status = null,
|
||||
$dir = null,
|
||||
$sort = null,
|
||||
$category = null,
|
||||
$dateFrom = null,
|
||||
$dateTo = null,
|
||||
$filterBy = 'APP_TITLE'
|
||||
)
|
||||
{
|
||||
// Default pagination values
|
||||
$start = $start ? $start : 0;
|
||||
$limit = $limit ? $limit : 25;
|
||||
|
||||
// Start the query builder
|
||||
$query = self::query();
|
||||
|
||||
// Add pagination to the query
|
||||
$query = $query->offset($start)
|
||||
->limit($limit);
|
||||
|
||||
// Fetch results and transform to a laravel collection
|
||||
$results = collect($query->get());
|
||||
|
||||
// Transform with additional data
|
||||
$priorities = ['1' => 'VL','2' => 'L','3' => 'N','4' => 'H','5' => 'VH'];
|
||||
$results->transform(function($item, $key) use($priorities) {
|
||||
// Grab related records
|
||||
$application = Application::where('APP_UID', $item['APP_UID'])->first();
|
||||
if(!$application) {
|
||||
// Application wasn't found, return null
|
||||
return null;
|
||||
}
|
||||
$task = Task::where('TAS_ID', $item['TAS_ID'])->first();
|
||||
if(!$task) {
|
||||
// Task not found, return null
|
||||
return null;
|
||||
}
|
||||
$user = User::where('USR_ID', $item['USR_ID'])->first();
|
||||
if(!$user) {
|
||||
// User not found, return null
|
||||
return null;
|
||||
}
|
||||
$process = Process::where('PRO_ID', $item['PRO_ID'])->first();;
|
||||
if(!$process) {
|
||||
// Process not found, return null
|
||||
return null;
|
||||
}
|
||||
|
||||
// Rewrite priority string
|
||||
if($item['DEL_PRIORITY']) {
|
||||
$item['DEL_PRIORITY'] = G::LoadTranslation( "ID_PRIORITY_{$priorities[$item['DEL_PRIORITY']]}" );
|
||||
}
|
||||
|
||||
// Merge in desired application data
|
||||
$item['APP_STATUS'] = $application->APP_STATUS;
|
||||
if($item['APP_STATUS']) {
|
||||
$item['APP_STATUS_LABEL'] = G::LoadTranslation( "ID_${item['APP_STATUS']}");
|
||||
} else {
|
||||
$item['APP_STATUS_LABEL'] = $application->APP_STATUS;
|
||||
}
|
||||
$item['APP_CREATE_DATE'] = $application->APP_CREATE_DATE;
|
||||
$item['APP_FINISH_DATE'] = $application->APP_FINISH_DATE;
|
||||
$item['APP_UPDATE_DATE'] = $application->APP_UPDATE_DATE;
|
||||
$item['APP_TITLE'] = $application->APP_TITLE;
|
||||
|
||||
// Merge in desired process data
|
||||
$item['APP_PRO_TITLE'] = $process->PRO_TITLE;
|
||||
|
||||
// Merge in desired task data
|
||||
$item['APP_TAS_TITLE'] = $task->TAS_TITLE;
|
||||
$item['APP_TAS_TYPE'] = $task->TAS_TYPE;
|
||||
|
||||
// Merge in desired user data
|
||||
$item['USR_LASTNAME'] = $user->USR_LASTNAME;
|
||||
$item['USR_FIRSTNAME'] = $user->USR_FIRSTNAME;
|
||||
$item['USR_USERNAME'] = $user->USR_USERNAME;
|
||||
|
||||
//@todo: this section needs to use 'User Name Display Format', currently in the extJs is defined this
|
||||
$item["APP_CURRENT_USER"] = $item["USR_LASTNAME"].' '.$item["USR_FIRSTNAME"];
|
||||
|
||||
$item["APPDELCR_APP_TAS_TITLE"] = '';
|
||||
|
||||
$item["USRCR_USR_UID"] = $item["USR_UID"];
|
||||
$item["USRCR_USR_FIRSTNAME"] = $item["USR_FIRSTNAME"];
|
||||
$item["USRCR_USR_LASTNAME"] = $item["USR_LASTNAME"];
|
||||
$item["USRCR_USR_USERNAME"] = $item["USR_USERNAME"];
|
||||
$item["APP_OVERDUE_PERCENTAGE"] = '';
|
||||
|
||||
return $item;
|
||||
});
|
||||
|
||||
// Remove any empty erroenous data
|
||||
$results = $results->filter();
|
||||
|
||||
// Bundle into response array
|
||||
$response = [
|
||||
// Fake totalCount to show pagination
|
||||
'totalCount' => $start + $limit + 1,
|
||||
'data' => $results->toArray()
|
||||
];
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user