From b088bbd23151f01185ca71c08170b9ca9c819cfb Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Mon, 5 Aug 2019 15:22:00 +0200
Subject: [PATCH] FEAT #11404 TIME 1:30 Folders list in basket list

---
 .../controllers/ResourceListController.php    | 28 ++++++++++++++++++-
 .../list/list-administration.component.ts     |  6 ++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index f1b19c05b44..329150768bc 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -24,6 +24,7 @@ use Basket\models\RedirectBasketModel;
 use Contact\models\ContactModel;
 use Entity\models\EntityModel;
 use Entity\models\ListInstanceModel;
+use Folder\models\FolderModel;
 use Group\models\GroupModel;
 use Group\models\ServiceModel;
 use Note\models\NoteModel;
@@ -978,6 +979,29 @@ class ResourceListController
         return $notes[0]['count'];
     }
 
+    private static function getFolders(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['resId', 'userId']);
+        ValidatorModel::intVal($args, ['resId', 'userId']);
+
+        $user = UserModel::getById(['id' => $args['userId'], 'select' => ['user_id']]);
+
+        $entities = UserModel::getEntitiesById(['userId' => $user['user_id']]);
+        $entities = array_column($entities, 'id');
+
+        if (empty($entities)) {
+            $entities = [0];
+        }
+
+        $folders = FolderModel::getWithEntitiesAndResources([
+            'select'    => ['folders.id', 'folders.label'],
+            'where'     => ['res_id = ?', '(user_id = ? OR entity_id in (?))'],
+            'data'      => [$args['resId'], $args['userId'], $entities]
+        ]);
+
+        return $folders;
+    }
+
     public static function getIdsWithOffsetAndLimit(array $args)
     {
         ValidatorModel::arrayType($args, ['resources']);
@@ -1085,9 +1109,11 @@ class ResourceListController
                     } elseif ($value['value'] == 'getOpinionLimitDate') {
                         $value['displayValue'] = $resource['opinion_limit_date'];
                         $display[] = $value;
+                    } elseif ($value['value'] == 'getFolders') {
+                        $value['displayValue'] = ResourceListController::getFolders(['resId' => $resource['res_id'], 'userId' => $args['userId']]);
+                        $display[] = $value;
                     }
                 }
-
                 $formattedResources[$key]['display'] = $display;
             }
         }
diff --git a/src/frontend/app/administration/basket/list/list-administration.component.ts b/src/frontend/app/administration/basket/list/list-administration.component.ts
index 195d7bd5cce..98c6280e01c 100644
--- a/src/frontend/app/administration/basket/list/list-administration.component.ts
+++ b/src/frontend/app/administration/basket/list/list-administration.component.ts
@@ -120,6 +120,12 @@ export class ListAdministrationComponent implements OnInit {
             'cssClasses': ['align_leftData'],
             'icon': 'fa-comment-alt'
         },
+        {
+            'value': 'getFolders',
+            'label': 'Afficher les dossiers',
+            'sample': '',
+            'cssClasses': ['align_leftData']
+        }
     ];
     availableDataClone: any = [];
 
-- 
GitLab