From 7b3d5d395f3de02682f78e9fbe04c7c27c219031 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Tue, 20 Feb 2018 15:42:49 +0100 Subject: [PATCH] FEAT roles explicit for entity --- .../entity/controllers/EntityController.php | 21 ++++++++++++++----- .../models/ListTemplateModelAbstract.php | 14 +++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/app/entity/controllers/EntityController.php b/src/app/entity/controllers/EntityController.php index 83cb1d25adf..74a96966032 100644 --- a/src/app/entity/controllers/EntityController.php +++ b/src/app/entity/controllers/EntityController.php @@ -70,6 +70,15 @@ class EntityController $entity['types'] = EntityModel::getTypes(); $entity['roles'] = EntityModel::getRoles(); + $listTemplateTypes = ListTemplateModel::getTypes(['select' => ['difflist_type_roles'], 'where' => ['difflist_type_id = ?'], 'data' => ['entity_id']]); + $typesForService = empty($listTemplateTypes[0]['difflist_type_roles']) ? [] : explode(' ', $listTemplateTypes[0]['difflist_type_roles']); + foreach ($entity['roles'] as $key => $role) { + if (in_array($role['id'], $typesForService)) { + $entity['roles'][$key]['available'] = true; + } else { + $entity['roles'][$key]['available'] = false; + } + } $listTemplates = ListTemplateModel::get([ 'select' => ['object_type', 'item_id', 'item_type', 'item_mode', 'title', 'description'], @@ -80,22 +89,24 @@ class EntityController $entity['listTemplate'] = ['dest' => [], 'cc' => []]; $entity['visaTemplate'] = []; foreach ($listTemplates as $listTemplate) { - if ($listTemplate['object_type'] == 'entity_id') { + if ($listTemplate['object_type'] == 'entity_id' && !empty($listTemplate['item_id'])) { if ($listTemplate['item_type'] == 'user_id') { $entity['listTemplate'][$listTemplate['item_mode']][] = [ 'type' => 'user', - 'idToDisplay' => UserModel::getLabelledUserById(['userId' => $listTemplate['item_id']]), + 'id' => $listTemplate['item_id'], + 'labelToDisplay' => UserModel::getLabelledUserById(['userId' => $listTemplate['item_id']]), 'descriptionToDisplay' => UserModel::getPrimaryEntityByUserId(['userId' => $listTemplate['item_id']])['entity_label'] ]; } elseif ($listTemplate['item_type'] == 'entity_id') { $entity['listTemplate'][$listTemplate['item_mode']][] = [ 'type' => 'entity', - 'idToDisplay' => $listTemplate['item_id'], - 'descriptionToDisplay' => EntityModel::getById(['entityId' => $listTemplate['item_id'], 'select' => ['entity_label']])['entity_label'] + 'id' => $listTemplate['item_id'], + 'labelToDisplay' => EntityModel::getById(['entityId' => $listTemplate['item_id'], 'select' => ['entity_label']])['entity_label'], + 'descriptionToDisplay' => '' ]; } } - if ($listTemplate['object_type'] == 'VISA_CIRCUIT') { + if ($listTemplate['object_type'] == 'VISA_CIRCUIT' && !empty($listTemplate['item_id'])) { $entity['visaTemplate'][] = [ 'type' => 'user', 'mode' => $listTemplate['item_mode'], diff --git a/src/app/entity/models/ListTemplateModelAbstract.php b/src/app/entity/models/ListTemplateModelAbstract.php index 3c7b4bc3494..fc9827b5cc9 100644 --- a/src/app/entity/models/ListTemplateModelAbstract.php +++ b/src/app/entity/models/ListTemplateModelAbstract.php @@ -96,4 +96,18 @@ class ListTemplateModelAbstract return true; } + + public static function getTypes(array $aArgs = []) + { + ValidatorModel::arrayType($aArgs, ['select', 'where', 'data']); + + $aListTemplatesTypes = DatabaseModel::select([ + 'select' => empty($aArgs['select']) ? ['*'] : $aArgs['select'], + 'table' => ['difflist_types'], + 'where' => $aArgs['where'], + 'data' => $aArgs['data'] + ]); + + return $aListTemplatesTypes; + } } -- GitLab