From 8586369d955304cc42bb41eaea3cc7567592abb2 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Wed, 9 Sep 2020 17:47:31 +0200 Subject: [PATCH] FEAT #13272 TIME 2:30 added visa + opinion workflow to export resource list --- .../resource/controllers/ExportController.php | 44 +++++++++++++++++++ .../app/list/export/export.component.ts | 11 ++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/app/resource/controllers/ExportController.php b/src/app/resource/controllers/ExportController.php index 906ff866026..3e76cfd2ea8 100755 --- a/src/app/resource/controllers/ExportController.php +++ b/src/app/resource/controllers/ExportController.php @@ -273,6 +273,10 @@ class ExportController $csvContent[] = empty($acknwoledgementSendDate[$resource['res_id']]) ? '' : $acknwoledgementSendDate[$resource['res_id']]; } elseif (strpos($value['value'], 'custom_', 0) !== false) { $csvContent[] = ExportController::getCustomFieldValue(['custom' => $value['value'], 'resId' => $resource['res_id']]); + } elseif ($value['value'] == 'getVisaCircuit') { + $csvContent[] = ExportController::getCircuit(['listType' => 'VISA_CIRCUIT', 'resId' => $resource['res_id']]); + } elseif ($value['value'] == 'getOpinionCircuit') { + $csvContent[] = ExportController::getCircuit(['listType' => 'AVIS_CIRCUIT', 'resId' => $resource['res_id']]); } } else { $allDates = ['doc_date', 'departure_date', 'admission_date', 'process_limit_date', 'opinion_limit_date', 'closing_date']; @@ -385,6 +389,10 @@ class ExportController $content[] = empty($acknwoledgementSendDate[$resource['res_id']]) ? '' : $acknwoledgementSendDate[$resource['res_id']]; } elseif (strpos($value['value'], 'custom_', 0) !== false) { $content[] = ExportController::getCustomFieldValue(['custom' => $value['value'], 'resId' => $resource['res_id']]); + } elseif ($value['value'] == 'getVisaCircuit') { + $content[] = ExportController::getCircuit(['listType' => 'VISA_CIRCUIT', 'resId' => $resource['res_id']]); + } elseif ($value['value'] == 'getOpinionCircuit') { + $content[] = ExportController::getCircuit(['listType' => 'AVIS_CIRCUIT', 'resId' => $resource['res_id']]); } } else { $allDates = ['doc_date', 'departure_date', 'admission_date', 'process_limit_date', 'opinion_limit_date', 'closing_date']; @@ -763,4 +771,40 @@ class ExportController return $customValues; } + + private static function getCircuit(array $args) + { + ValidatorModel::notEmpty($args, ['resId', 'listType']); + ValidatorModel::intVal($args, ['resId']); + ValidatorModel::stringType($args, ['listType']); + + $list = []; + + $roles = EntityModel::getRoles(); + $roles = array_column($roles, 'label', 'id'); + + $listInstances = ListInstanceModel::get([ + 'select' => ['item_id', 'item_mode'], + 'where' => ['res_id in (?)', 'item_type = ?', 'difflist_type = ?'], + 'data' => [$args['resId'], 'user_id', $args['listType']], + 'order_by' => ['sequence'] + ]); + + foreach ($listInstances as $listInstance) { + $user = UserModel::getById(['id' => $listInstance['item_id'], 'select' => ['firstname', 'lastname']]); + + if ($args['listType'] == 'VISA_CIRCUIT') { + if ($listInstance['item_mode'] == 'cc') { + $listInstance['item_mode'] = 'copy'; + } + $roleLabel = $roles[$listInstance['item_mode']]; + + $list[] = "{$user['firstname']} {$user['lastname']} ({$roleLabel})"; + } else { + $list[] = "{$user['firstname']} {$user['lastname']}"; + } + } + + return implode("\n", $list); + } } diff --git a/src/frontend/app/list/export/export.component.ts b/src/frontend/app/list/export/export.component.ts index 38038f9a14a..f3fcaaa355d 100644 --- a/src/frontend/app/list/export/export.component.ts +++ b/src/frontend/app/list/export/export.component.ts @@ -17,7 +17,6 @@ declare var $: any; }) export class ExportComponent implements OnInit { - loading: boolean = false; loadingExport: boolean = false; @@ -204,6 +203,16 @@ export class ExportComponent implements OnInit { label: this.translate.instant('lang.acknowledgementSendDate'), isFunction: true }, + { + value: 'getVisaCircuit', + label: this.translate.instant('lang.getVisaWorkflow'), + isFunction: true + }, + { + value: 'getOpinionCircuit', + label: this.translate.instant('lang.opinionCircuit'), + isFunction: true + }, { value: '', label: this.translate.instant('lang.comment'), -- GitLab