From 40e3e579ac235e7c096012a176934c216b7ad819 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Wed, 22 Jan 2020 17:30:32 +0100
Subject: [PATCH] FEAT #12842 TIME 1:00 filter on folders in resources lists

---
 .../resource/controllers/ResourceListController.php   | 11 +++++++++++
 src/frontend/service/filtersList.service.ts           |  8 ++++++++
 2 files changed, 19 insertions(+)

diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 660c3769471..f2963472876 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -281,6 +281,17 @@ class ResourceListController
             $where[] = 'doctypes.type_id in (?)';
             $queryData[] = explode(',', $args['data']['doctypes']);
         }
+        if (!empty($args['data']['folders'])) {
+            $resourcesInFolders = FolderModel::getWithResources([
+                'select' => ['resources_folders.res_id'],
+                'where'  => ['resources_folders.folder_id in (?)'],
+                'data'   => [explode(',', $args['data']['folders'])]
+            ]);
+            $resourcesInFolders = array_column($resourcesInFolders, 'res_id');
+
+            $where[] = 'res_id in (?)';
+            $queryData[] = $resourcesInFolders;
+        }
 
         if (!empty($args['data']['order']) && strpos($args['data']['order'], 'alt_identifier') !== false) {
             $order = 'order_alphanum(alt_identifier) ' . explode(' ', $args['data']['order'])[1];
diff --git a/src/frontend/service/filtersList.service.ts b/src/frontend/service/filtersList.service.ts
index 6f016c50d5d..70c8d677efc 100644
--- a/src/frontend/service/filtersList.service.ts
+++ b/src/frontend/service/filtersList.service.ts
@@ -160,6 +160,14 @@ export class FiltersListService {
 
                 filters += '&doctypes=' + doct.join(',');
             }
+            if (this.listsProperties[this.listsPropertiesIndex].folders.length > 0) {
+                let folders: any[] = [];
+                this.listsProperties[this.listsPropertiesIndex].folders.forEach((element: any) => {
+                    folders.push(element.id);
+                });
+
+                filters += '&folders=' + folders.join(',');
+            }
         }
         return filters;
     }
-- 
GitLab