diff --git a/rest/index.php b/rest/index.php index 4b64ff4b637ad4d5d423cbff2ffb131b4b1b08cd..2e5a34793e73c333926567f48a16be5c78e05de2 100755 --- a/rest/index.php +++ b/rest/index.php @@ -80,7 +80,7 @@ $app->get('/autocomplete/correspondents', \SrcCore\controllers\AutoCompleteContr $app->get('/autocomplete/contacts/groups', \SrcCore\controllers\AutoCompleteController::class . ':getContactsForGroups'); $app->get('/autocomplete/contacts/company', \SrcCore\controllers\AutoCompleteController::class . ':getContactsCompany'); $app->get('/autocomplete/users/administration', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForAdministration'); -$app->get('/autocomplete/users/visa', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForVisa'); +$app->get('/autocomplete/users/circuit', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForCircuit'); $app->get('/autocomplete/entities', \SrcCore\controllers\AutoCompleteController::class . ':getEntities'); $app->get('/autocomplete/statuses', \SrcCore\controllers\AutoCompleteController::class . ':getStatuses'); $app->get('/autocomplete/banAddresses', \SrcCore\controllers\AutoCompleteController::class . ':getBanAddresses'); @@ -345,6 +345,7 @@ $app->get('/resources/{resId}/templates', \Template\controllers\TemplateControll $app->get('/resources/{resId}/listInstance', \Entity\controllers\ListInstanceController::class . ':getByResId'); $app->get('/resources/{resId}/visaCircuit', \Entity\controllers\ListInstanceController::class . ':getVisaCircuitByResId'); $app->get('/resources/{resId}/opinionCircuit', \Entity\controllers\ListInstanceController::class . ':getOpinionCircuitByResId'); +$app->get('/resources/{resId}/availableCircuits', \Entity\controllers\ListTemplateController::class . ':getAvailableCircuitsByResId'); $app->get('/res/{resId}/acknowledgementReceipt/{id}', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getAcknowledgementReceipt'); $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus'); $app->post('/res/list', \Resource\controllers\ResController::class . ':getList'); diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index 308bef72ac0120890b295cefd74b2126c46a0b87..170bfb81fa558cb8d217c684b88658b4d68c936b 100755 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -34,24 +34,6 @@ use User\models\UserModel; class ContactController { - const MAPPING_FIELDS2 = [ - 'civility' => 'civility', - 'firstname' => 'firstname', - 'lastname' => 'lastname', - 'company' => 'company', - 'department' => 'department', - 'function' => 'function', - 'address_number' => 'addressNumber', - 'address_street' => 'addressStreet', - 'address_additional1' => 'addressAdditional1', - 'address_additional2' => 'addressAdditional2', - 'address_postcode' => 'addressPostcode', - 'address_town' => 'addressTown', - 'address_country' => 'addressCountry', - 'email' => 'email', - 'phone' => 'phone', - 'notes' => 'notes' - ]; const MAPPING_FIELDS = [ 'civility' => 'civility', 'firstname' => 'firstname', diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index 1a32cd819863f08d8c520e41b39fa5773ca8d999..f99b2b7864d3a93b0470b6f3156acaa75ed6806f 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -18,6 +18,7 @@ use Entity\models\EntityModel; use Entity\models\ListTemplateModel; use Group\controllers\PrivilegeController; use History\controllers\HistoryController; +use Resource\models\ResModel; use Respect\Validation\Validator; use Slim\Http\Request; use Slim\Http\Response; @@ -504,6 +505,41 @@ class ListTemplateController return $response->withJson(['roles' => array_values($roles)]); } + public function getAvailableCircuitsByResId(Request $request, Response $response, array $args) + { + $queryParams = $request->getQueryParams(); + + if (!Validator::stringType()->notEmpty()->validate($queryParams['circuit'])) { + return $response->withStatus(400)->withJson(['errors' => 'Query params circuit is empty']); + } + + $circuit = $queryParams['circuit'] == 'opinion' ? 'AVIS_CIRCUIT' : 'VISA_CIRCUIT'; + $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['destination']]); + + $where = ['object_type = ?']; + $data = [$circuit]; + if (!empty($resource['destination'])) { + $where[] = '(object_id = ? OR object_id like ?)'; + $data[] = $resource['destination']; + $data[] = "{$circuit}_%"; + $orderBy = ["object_id='{$resource['destination']}' DESC", 'title']; + } else { + $where[] = 'object_id like ?'; + $data[] = "{$circuit}_%"; + $orderBy = ['title']; + } + + $circuits = []; + $listTemplates = ListTemplateModel::get(['select' => ['*'], 'where' => $where, 'data' => $data, 'orderBy' => $orderBy]); + foreach ($listTemplates as $value) { + $circuits[$value['object_id']] = ['id' => $value['id'], 'title' => $value['title']]; + } + + $circuits = array_values($circuits); + + return $response->withJson(['circuits' => $circuits]); + } + private static function checkItems(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['items']); diff --git a/src/app/entity/models/ListTemplateModelAbstract.php b/src/app/entity/models/ListTemplateModelAbstract.php index 8e7a5dba1cab7ec6226b6f6a2ebfc68a1184722c..17ea6fd0aa2fe0092c177fec08ed95239dc7b7cf 100755 --- a/src/app/entity/models/ListTemplateModelAbstract.php +++ b/src/app/entity/models/ListTemplateModelAbstract.php @@ -19,15 +19,16 @@ use SrcCore\models\DatabaseModel; abstract class ListTemplateModelAbstract { - public static function get(array $aArgs = []) + public static function get(array $args = []) { - ValidatorModel::arrayType($aArgs, ['select', 'where', 'data']); + ValidatorModel::arrayType($args, ['select', 'where', 'data']); $aListTemplates = DatabaseModel::select([ - 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'select' => empty($args['select']) ? ['*'] : $args['select'], 'table' => ['listmodels'], - 'where' => $aArgs['where'], - 'data' => $aArgs['data'] + 'where' => $args['where'], + 'data' => $args['data'], + 'order_by' => empty($args['orderBy']) ? [] : $args['orderBy'] ]); return $aListTemplates; diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php index 77996c96c3d38f8a90489922b57c68fbca536f0b..6ff31de499d5a91834618e5c87b328797fe3ca17 100755 --- a/src/core/controllers/AutoCompleteController.php +++ b/src/core/controllers/AutoCompleteController.php @@ -392,12 +392,17 @@ class AutoCompleteController return $response->withJson($data); } - public static function getUsersForVisa(Request $request, Response $response) + public static function getUsersForCircuit(Request $request, Response $response) { - $data = $request->getQueryParams(); - $check = Validator::stringType()->notEmpty()->validate($data['search']); - if (!$check) { - return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); + $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']; @@ -406,7 +411,7 @@ class AutoCompleteController $fields = AutoCompleteController::getUnsensitiveFieldsForRequest(['fields' => $fields]); $requestData = AutoCompleteController::getDataForRequest([ - 'search' => $data['search'], + 'search' => $queryParams['search'], 'fields' => $fields, 'where' => [ 'usergroups.group_id = usergroups_services.group_id', @@ -416,7 +421,7 @@ class AutoCompleteController 'users.user_id not in (?)', 'users.status not in (?)' ], - 'data' => [['visa_documents', 'sign_document'], $excludedUsers, ['DEL', 'SPD']], + 'data' => [$services, $excludedUsers, ['DEL', 'SPD']], 'fieldsNumber' => 2, ]); diff --git a/src/frontend/app/administration/entity/entities-administration.component.html b/src/frontend/app/administration/entity/entities-administration.component.html index cda8cf59d2557dbab2b9ce98a428a500a3a2a86d..b71154838d372013c8dcdadc044240bb71ee426a 100755 --- a/src/frontend/app/administration/entity/entities-administration.component.html +++ b/src/frontend/app/administration/entity/entities-administration.component.html @@ -247,7 +247,7 @@ <mat-tab label="{{lang.visaWorkflow}}" *ngIf="!creationMode"> <div class="row" style="margin:0px;" id="visaCircuitContent"> <div class="col-md-12"> - <plugin-autocomplete [labelPlaceholder]="lang.addVisaSignUser" [labelList]="lang.availableUsers" [routeDatas]="['/rest/autocomplete/users/visa']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> + <plugin-autocomplete [labelPlaceholder]="lang.addVisaSignUser" [labelList]="lang.availableUsers" [routeDatas]="['/rest/autocomplete/users/circuit']" [targetSearchKey]="'idToDisplay'" [subInfoKey]="'descriptionToDisplay'" (triggerEvent)="addElemListModelVisa($event)"></plugin-autocomplete> <mat-list> <span dnd-sortable-container [dropZones]="['boxers-zone']" [sortableData]="currentEntity.visaTemplate"> <mat-list-item disableRipple="true" *ngFor="let template of currentEntity.visaTemplate; let i = index" title="{{lang.move}}"