From a2fa2cb8feea7caf2db5700dbe54ca7aceadddc6 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 9 Jan 2020 12:27:58 +0100 Subject: [PATCH] FEAT #12764 TIME 0:15 get all available users for circuit --- .../controllers/AutoCompleteController.php | 113 ++++++++++++++---- 1 file changed, 92 insertions(+), 21 deletions(-) diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php index 690ab7a7100..a75278a13b7 100755 --- a/src/core/controllers/AutoCompleteController.php +++ b/src/core/controllers/AutoCompleteController.php @@ -396,34 +396,33 @@ class AutoCompleteController { $queryParams = $request->getQueryParams(); - if (!Validator::stringType()->notEmpty()->validate($queryParams['search'])) { - return $response->withStatus(400)->withJson(['errors' => 'Query params search is empty']); - } - $services = ['visa_documents', 'sign_document']; if (!empty($queryParams['circuit']) && $queryParams['circuit'] == 'opinion') { $services = ['avis_documents']; } - $excludedUsers = ['superadmin']; + $requestData['where'] = [ + 'usergroups.group_id = usergroups_services.group_id', + 'usergroups.id = usergroup_content.group_id', + 'usergroup_content.user_id = users.id', + 'usergroups_services.service_id in (?)', + 'users.user_id not in (?)', + 'users.status not in (?)' + ]; + $requestData['data'] = [$services, ['superadmin'], ['DEL', 'SPD']]; - $fields = ['users.firstname', 'users.lastname']; - $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]); + if (!empty($queryParams['search'])) { + $fields = ['users.firstname', 'users.lastname']; + $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]); - $requestData = AutoCompleteController::getDataForRequest([ - 'search' => $queryParams['search'], - 'fields' => $fields, - 'where' => [ - 'usergroups.group_id = usergroups_services.group_id', - 'usergroups.id = usergroup_content.group_id', - 'usergroup_content.user_id = users.id', - 'usergroups_services.service_id in (?)', - 'users.user_id not in (?)', - 'users.status not in (?)' - ], - 'data' => [$services, $excludedUsers, ['DEL', 'SPD']], - 'fieldsNumber' => 2, - ]); + $requestData = AutoCompleteController::getDataForRequest([ + 'search' => $queryParams['search'], + 'fields' => $fields, + 'where' => $requestData['where'], + 'data' => $requestData['data'], + 'fieldsNumber' => 2, + ]); + } $users = DatabaseModel::select([ 'select' => ['DISTINCT users.id', 'users.firstname', 'users.lastname'], @@ -822,6 +821,78 @@ class AutoCompleteController return $response->withJson($data); } +// public static function getResources(Request $request, Response $response) +// { +// $queryparams = $request->getQueryParams(); +// +// if (!Validator::stringType()->notEmpty()->validate($queryparams['search'])) { +// return $response->withStatus(400)->withJson(['errors' => 'Query params search is empty']); +// } +// +// $autocompleteUsers = []; +// if (empty($queryParams['noUsers'])) { +// $fields = ['subject', 'alt_identifier']; +// $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]); +// $requestData = AutoCompleteController::getDataForRequest([ +// 'search' => $queryParams['search'], +// 'fields' => $fields, +// 'where' => ['status not in (?)', 'user_id not in (?)'], +// 'data' => [['DEL', 'SPD'], ['superadmin']], +// 'fieldsNumber' => 2, +// ]); +// +// $users = UserModel::get([ +// 'select' => ['id', 'firstname', 'lastname'], +// 'where' => $requestData['where'], +// 'data' => $requestData['data'], +// 'orderBy' => ['lastname'], +// 'limit' => self::TINY_LIMIT +// ]); +// +// foreach ($users as $user) { +// $autocompleteUsers[] = [ +// 'type' => 'user', +// 'id' => $user['id'], +// 'firstname' => $user['firstname'], +// 'lastname' => $user['lastname'] +// ]; +// } +// } +// +// //Entities +// $autocompleteEntities = []; +// if (empty($queryParams['noEntities'])) { +// $fields = ['entity_label']; +// $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]); +// $requestData = AutoCompleteController::getDataForRequest([ +// 'search' => $queryParams['search'], +// 'fields' => $fields, +// 'where' => ['enabled = ?'], +// 'data' => ['Y'], +// 'fieldsNumber' => 1, +// ]); +// +// $entities = EntityModel::get([ +// 'select' => ['id', 'entity_id', 'entity_label', 'short_label'], +// 'where' => $requestData['where'], +// 'data' => $requestData['data'], +// 'orderBy' => ['entity_label'], +// 'limit' => self::TINY_LIMIT +// ]); +// +// foreach ($entities as $value) { +// $autocompleteEntities[] = [ +// 'type' => 'entity', +// 'id' => $value['id'], +// 'lastname' => $value['entity_label'], +// 'firstname' => '' +// ]; +// } +// } +// +// return $response->withJson($data); +// } + public static function getDataForRequest(array $args) { ValidatorModel::notEmpty($args, ['search', 'fields', 'fieldsNumber']); -- GitLab