update names of departments, ticket search path

This commit is contained in:
Guillermo Giuliana 2020-02-03 17:38:58 -03:00
parent 74de20641f
commit ca63c3d08b
2 changed files with 32 additions and 28 deletions

View File

@ -363,6 +363,7 @@ export default {
'NO_PERMISSION': 'You\'ve no permission to access to this page.', 'NO_PERMISSION': 'You\'ve no permission to access to this page.',
'INVALID_USER': 'User id is invalid', 'INVALID_USER': 'User id is invalid',
'INVALID_TITLE': 'invalid title', 'INVALID_TITLE': 'invalid title',
'INVALID_NAME': 'invalid name',
'ERROR_RETRIEVING_TICKETS': 'An error occurred while trying to retrieve tickets.', 'ERROR_RETRIEVING_TICKETS': 'An error occurred while trying to retrieve tickets.',
'ERROR_RETRIEVING_USERS': 'An error occurred while trying to retrieve users.', 'ERROR_RETRIEVING_USERS': 'An error occurred while trying to retrieve users.',
'ERROR_RETRIEVING_BAN_LIST': 'An error occurred while trying to retrieve the list of banned emails.', 'ERROR_RETRIEVING_BAN_LIST': 'An error occurred while trying to retrieve the list of banned emails.',

View File

@ -104,6 +104,12 @@ class SearchController extends Controller {
} }
public function handler() { public function handler() {
$allowedDepartmentsId = [];
foreach (Controller::getLoggedUser()->sharedDepartmentList->toArray() as $department) {
array_push($allowedDepartmentsId,$department['id']);
}
$inputs = [ $inputs = [
'closed' => Controller::request('closed'), 'closed' => Controller::request('closed'),
'tags' => json_decode(Controller::request('tags')), 'tags' => json_decode(Controller::request('tags')),
@ -117,7 +123,7 @@ class SearchController extends Controller {
'query' => Controller::request('query'), 'query' => Controller::request('query'),
'orderBy' => json_decode(Controller::request('orderBy'),true), 'orderBy' => json_decode(Controller::request('orderBy'),true),
'page' => Controller::request('page'), 'page' => Controller::request('page'),
'allowedDepartments' => Controller::getLoggedUser()->sharedDepartmentList->toArray(), 'allowedDepartments' => $allowedDepartmentsId,
'staffId' => Controller::getLoggedUser()->id 'staffId' => Controller::getLoggedUser()->id
]; ];
@ -254,28 +260,28 @@ class SearchController extends Controller {
} }
} }
private function setDepartmentFilter($departments,$ownDepartments, $idStaff, &$filters){ private function setDepartmentFilter($requestedDepartments,$myDepartments, $idStaff, &$filters){
if ($filters != "") $filters .= " and "; if ($filters != "") $filters .= " and ";
$restOfDepartments = $this->generateValidDepartmentList($departments, $ownDepartments); $requestedNotOwnedDepartments = $this->generateValidDepartmentList($requestedDepartments, $myDepartments);
$allowedDepartments = $this->generateValidDepartmentList($departments, $ownDepartments, true); $requestedOwnedDepartments = $this->generateValidDepartmentList($requestedDepartments, $myDepartments, true);
$first = TRUE; $first = TRUE;
if(!$allowedDepartments && !$restOfDepartments){ if(!$requestedOwnedDepartments && !$requestedNotOwnedDepartments){
foreach($ownDepartments as $department) { foreach($myDepartments as $department) {
if($first){ if($first){
$filters .= " ( "; $filters .= " ( ";
$first = FALSE; $first = FALSE;
} else { } else {
$filters .= " or "; $filters .= " or ";
} }
$filters .= "ticket.department_id = " . $department['id']; $filters .= "ticket.department_id = " . $department;
} }
$filters .= ")"; $filters .= ")";
} }
if($allowedDepartments){ if($requestedOwnedDepartments){
foreach($allowedDepartments as $department) { foreach($requestedOwnedDepartments as $department) {
if($first){ if($first){
$filters .= " ( "; $filters .= " ( ";
$first = FALSE; $first = FALSE;
@ -286,11 +292,11 @@ class SearchController extends Controller {
} }
} }
if($restOfDepartments){ if($requestedNotOwnedDepartments){
if($allowedDepartments) $filters .= " or "; if($requestedOwnedDepartments) $filters .= " or ";
$filters .= "(ticket.author_staff_id = " . $idStaff . " and "; $filters .= "(ticket.author_staff_id = " . $idStaff . " and ";
$first = TRUE; $first = TRUE;
foreach($restOfDepartments as $department) { foreach($requestedNotOwnedDepartments as $department) {
if($first){ if($first){
$filters .= " ( "; $filters .= " ( ";
$first = FALSE; $first = FALSE;
@ -301,7 +307,7 @@ class SearchController extends Controller {
} }
$filters .= "))"; $filters .= "))";
} }
if($allowedDepartments) $filters .= " )"; if($requestedOwnedDepartments) $filters .= " )";
} }
private function setAuthorFilter($authors, &$filters){ private function setAuthorFilter($authors, &$filters){
@ -366,22 +372,19 @@ class SearchController extends Controller {
$filters .= " (ticket.title LIKE :query or ticket.content LIKE :query or ticket.ticket_number LIKE :query". $ticketevent ." )"; $filters .= " (ticket.title LIKE :query or ticket.content LIKE :query or ticket.ticket_number LIKE :query". $ticketevent ." )";
}; };
} }
private function generateValidDepartmentList($departments, $allowedDepartments, $allowed = false){ private function generateValidDepartmentList($requestedDepartments, $myDepartments, $allowed = false){
$allowedDepartmentsresult = []; $requestedNotOwnedDepartments = [];
$managedDepartments = [];
if($departments == null) $departments = []; if($requestedDepartments == null) $requestedDepartments = [];
foreach ($allowedDepartments as $department) {
array_push($managedDepartments,$department['id']); $requestedOwnedDepartments = array_values(array_unique(array_intersect($requestedDepartments, $myDepartments)));
} $requestedNotOwnedDepartments = array_values(array_diff($requestedDepartments, $requestedOwnedDepartments));
$allowedDepartmentsresult = array_values(array_unique(array_intersect($departments,$managedDepartments)));
$authorsDepartments = array_values(array_diff($departments,$allowedDepartmentsresult));
if($allowed){ if($allowed){
return $allowedDepartmentsresult; return $requestedOwnedDepartments;
}else{ }else{
return $authorsDepartments; return $requestedNotOwnedDepartments;
}; };
} }