From 24a5a3911f61225715901ab0c3693d2053290454 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Wed, 21 Oct 2020 13:23:35 +0200 Subject: [PATCH] FEAT #15011 TIME 2 save diffusionList in indexingModel --- package.json | 2 +- .../controllers/ListInstanceController.php | 2 +- .../controllers/ListTemplateController.php | 4 +- .../controllers/IndexingModelController.php | 47 ++++++++++++++++++- src/app/note/controllers/NoteController.php | 4 +- src/app/user/controllers/UserController.php | 4 +- .../controllers/PreparedClauseController.php | 4 +- 7 files changed, 56 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 82e3b7a9a71..23a53722b60 100755 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "ngx-pipes": "^2.7.5", "node-sass": "^4.14.1", "nodemon": "^2.0.6", - "npm-check-updates": "^9.0.4", + "npm-check-updates": "^9.1.2", "pdfjs-dist": "2.5.207", "photoswipe": "^4.1.3", "protractor": "^7.0.0", diff --git a/src/app/entity/controllers/ListInstanceController.php b/src/app/entity/controllers/ListInstanceController.php index 18663a52974..84429c09f80 100755 --- a/src/app/entity/controllers/ListInstanceController.php +++ b/src/app/entity/controllers/ListInstanceController.php @@ -46,7 +46,7 @@ class ListInstanceController $listInstances = ListInstanceModel::get(['select' => ['*'], 'where' => ['res_id = ?', 'difflist_type = ?'], 'data' => [$args['resId'], 'entity_id']]); foreach ($listInstances as $key => $value) { if ($value['item_type'] == 'entity_id') { - $entity = Entitymodel::getById(['id' => $value['item_id'], 'select' => ['entity_label', 'entity_id']]); + $entity = EntityModel::getById(['id' => $value['item_id'], 'select' => ['entity_label', 'entity_id']]); $listInstances[$key]['item_id'] = $entity['entity_id']; $listInstances[$key]['itemSerialId'] = $value['item_id']; $listInstances[$key]['labelToDisplay'] = $entity['entity_label']; diff --git a/src/app/entity/controllers/ListTemplateController.php b/src/app/entity/controllers/ListTemplateController.php index 1ca94da1411..3c815531b95 100755 --- a/src/app/entity/controllers/ListTemplateController.php +++ b/src/app/entity/controllers/ListTemplateController.php @@ -320,7 +320,7 @@ class ListTemplateController $listTemplateItems = ListTemplateItemModel::get(['select' => ['*'], 'where' => ['list_template_id = ?'], 'data' => [$listTemplate['id']]]); foreach ($listTemplateItems as $itemKey => $value) { if ($value['item_type'] == 'entity') { - $listTemplateItems[$itemKey]['labelToDisplay'] = Entitymodel::getById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; + $listTemplateItems[$itemKey]['labelToDisplay'] = EntityModel::getById(['id' => $value['item_id'], 'select' => ['entity_label']])['entity_label']; $listTemplateItems[$itemKey]['descriptionToDisplay'] = ''; } else { $user = UserModel::getById(['id' => $value['item_id'], 'select' => ['firstname', 'lastname', 'external_id']]); @@ -421,7 +421,7 @@ class ListTemplateController $type = $aArgs['typeId'] == 'entity_id' ? 'diffusionList' : ($aArgs['typeId'] == 'VISA_CIRCUIT' ? 'visaCircuit' : 'opinionCircuit'); $listTemplates = ListTemplateModel::getWithItems(['select' => ['DISTINCT entity_id'], 'where' => ['type = ?', 'item_mode = ?', 'entity_id is not null'], 'data' => [$type, $roles[$key]['id']]]); foreach ($listTemplates as $listTemplate) { - $entity = Entitymodel::getById(['select' => ['short_label'], 'id' => $listTemplate['entity_id']]); + $entity = EntityModel::getById(['select' => ['short_label'], 'id' => $listTemplate['entity_id']]); $roles[$key]['usedIn'][] = $entity['short_label']; } } diff --git a/src/app/indexingModel/controllers/IndexingModelController.php b/src/app/indexingModel/controllers/IndexingModelController.php index fb54ccc57e0..8098cccd876 100755 --- a/src/app/indexingModel/controllers/IndexingModelController.php +++ b/src/app/indexingModel/controllers/IndexingModelController.php @@ -31,6 +31,7 @@ use Respect\Validation\Validator; use Slim\Http\Request; use Slim\Http\Response; use Tag\models\ResourceTagModel; +use User\models\UserModel; class IndexingModelController { @@ -77,8 +78,35 @@ class IndexingModelController } $fields = IndexingModelFieldModel::get(['select' => ['identifier', 'mandatory', 'default_value', 'unit', 'enabled'], 'where' => ['model_id = ?'], 'data' => [$args['id']]]); + $destination = ''; foreach ($fields as $key => $value) { $fields[$key]['default_value'] = json_decode($value['default_value'], true); + if ($value['identifier'] == 'destination') { + $destination = $value['default_value']; + } elseif ($value['identifier'] == 'diffusionList') { + foreach ($fields[$key]['default_value'] as $itemKey => $item) { + if ($item['type'] == 'entity') { + $entity = EntityModel::getById(['id' => $item['id'], 'select' => ['entity_label', 'entity_id']]); + $fields[$key]['default_value'][$itemKey]['labelToDisplay'] = $entity['entity_label']; + $fields[$key]['default_value'][$itemKey]['descriptionToDisplay'] = null; + } else { + $user = UserModel::getById(['id' => $item['id'], 'select' => ['firstname', 'lastname', 'status']]); + $userEntities = UserModel::getEntitiesById(['id' => $item['id'], 'select' => ['entities.id']]); + $userEntities = array_column($userEntities, 'id'); + if ($item['mode'] == 'dest' && !empty($destination) && !in_array($destination, $userEntities)) { + unset($fields[$key]['default_value'][$itemKey]); + continue; + } + if (!empty($user) && !in_array($user['status'], ['SPD', 'DEL'])) { + $fields[$key]['default_value'][$itemKey]['labelToDisplay'] = $user['firstname'] . ' ' . $user['lastname']; + $fields[$key]['default_value'][$itemKey]['descriptionToDisplay'] = UserModel::getPrimaryEntityById(['id' => $item['id'], 'select' => ['entities.entity_label']])['entity_label']; + } else { + unset($fields[$key]['default_value'][$itemKey]); + } + } + } + $fields[$key]['default_value'] = array_values($fields[$key]['default_value']); + } } $model['fields'] = $fields; @@ -139,18 +167,35 @@ class IndexingModelController $fieldsMaster[$key]['default_value'] = json_decode($value['default_value'], true); } - // Look for fields in master model // if field in master is not in child, return an error // if field is not in master but in child, is ignored $arrayTmp = []; + $diffusionListFound = false; foreach ($fieldsMaster as $field) { + if ($field['identifier'] == 'diffusionList' && $diffusionListFound) { + continue; + } $found = false; foreach ($body['fields'] as $value) { if ($value['identifier'] == $field['identifier'] && $value['mandatory'] == $field['mandatory'] && $value['unit'] == $field['unit']) { if (!$field['enabled']) { $value = $field; } + + array_push($arrayTmp, $value); + $found = true; + if ($field['identifier'] != 'destination') { + break; + } + } + if ($field['identifier'] == 'destination' && $value['identifier'] == 'diffusionList') { + if (!$field['enabled']) { + $value = $field; + } + $diffusionListFound = true; + $value['unit'] = $field['unit']; + array_push($arrayTmp, $value); $found = true; break; diff --git a/src/app/note/controllers/NoteController.php b/src/app/note/controllers/NoteController.php index 9b9abdd3403..fcdc27666b2 100755 --- a/src/app/note/controllers/NoteController.php +++ b/src/app/note/controllers/NoteController.php @@ -98,7 +98,7 @@ class NoteController if (!Validator::arrayType()->validate($body['entities'])) { return $response->withStatus(400)->withJson(['errors' => 'Body entities is not an array']); } - $entities = Entitymodel::get(['select' => ['count(1)'], 'where' => ['entity_id in (?)'], 'data' => [$body['entities']]]); + $entities = EntityModel::get(['select' => ['count(1)'], 'where' => ['entity_id in (?)'], 'data' => [$body['entities']]]); if ($entities[0]['count'] != count($body['entities'])) { return $response->withStatus(400)->withJson(['errors' => 'Body entities : one or more entities do not exist']); } @@ -158,7 +158,7 @@ class NoteController if (!Validator::arrayType()->validate($body['entities'])) { return $response->withStatus(400)->withJson(['errors' => 'Body entities is not an array']); } - $entities = Entitymodel::get(['select' => ['count(1)'], 'where' => ['entity_id in (?)'], 'data' => [$body['entities']]]); + $entities = EntityModel::get(['select' => ['count(1)'], 'where' => ['entity_id in (?)'], 'data' => [$body['entities']]]); if ($entities[0]['count'] != count($body['entities'])) { return $response->withStatus(400)->withJson(['errors' => 'Body entities : one or more entities do not exist']); } diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index c9dc1803b24..6c96cd8dffe 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -372,13 +372,13 @@ class UserController $formattedLIEntities = []; $listInstanceEntities = array_unique($listInstanceEntities); foreach ($listInstanceEntities as $listInstanceEntity) { - $entity = Entitymodel::getByEntityId(['select' => ['short_label'], 'entityId' => $listInstanceEntity]); + $entity = EntityModel::getByEntityId(['select' => ['short_label'], 'entityId' => $listInstanceEntity]); $formattedLIEntities[] = $entity['short_label']; } $formattedLTEntities = []; $listTemplateEntities = array_unique($listTemplateEntities); foreach ($listTemplateEntities as $listTemplateEntity) { - $entity = Entitymodel::getById(['select' => ['short_label'], 'id' => $listTemplateEntity]); + $entity = EntityModel::getById(['select' => ['short_label'], 'id' => $listTemplateEntity]); $formattedLTEntities[] = $entity['short_label']; } diff --git a/src/core/controllers/PreparedClauseController.php b/src/core/controllers/PreparedClauseController.php index 514b019a933..0b51e434d2f 100755 --- a/src/core/controllers/PreparedClauseController.php +++ b/src/core/controllers/PreparedClauseController.php @@ -192,7 +192,7 @@ class PreparedClauseController for ($i = 0; $i < $total; $i++) { $tmpParentEntity = trim(str_replace("'", '', $parentEntity[1][$i])); if (!empty($tmpParentEntity)) { - $entity = Entitymodel::getByEntityId(['entityId' => $tmpParentEntity, 'select' => ['entity_id', 'parent_entity_id']]); + $entity = EntityModel::getByEntityId(['entityId' => $tmpParentEntity, 'select' => ['entity_id', 'parent_entity_id']]); } if (empty($entity['parent_entity_id'])) { $parentEntityClause = "''"; @@ -209,7 +209,7 @@ class PreparedClauseController for ($i = 0; $i < $total; $i++) { $tmpSisterEntity = trim(str_replace("'", '', $sistersEntities[1][$i])); if (!empty($tmpSisterEntity)) { - $sisterEntity = Entitymodel::getByEntityId(['entityId' => $tmpSisterEntity, 'select' => ['parent_entity_id']]); + $sisterEntity = EntityModel::getByEntityId(['entityId' => $tmpSisterEntity, 'select' => ['parent_entity_id']]); } $allSisterEntities = []; if (!empty($sisterEntity)) { -- GitLab