From b2dc4e6d9ae527137fede930d151e8f84f028c8d Mon Sep 17 00:00:00 2001
From: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Date: Thu, 23 Feb 2023 12:28:18 +0000
Subject: [PATCH] Bug 32983: Use REST API route to retrieve authorised values

Make one API call for all AV categories+values instead of one API call per AV category required
---
 .../prog/js/vue/components/ERM/Main.vue       | 19 ++++++++++---------
 .../prog/js/vue/fetch/authorised-values.js    | 12 ++++++++----
 2 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue
index 03c914bd86..9dea457fde 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue
@@ -181,15 +181,16 @@ export default {
             av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE",
             av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE",
         }
-        let promises = []
-        Object.entries(authorised_values).forEach(([av_var, av_cat]) => {
-            promises.push(
-                av_client.values.getAll(av_cat).then(av => {
-                    this.AVStore[av_var] = av
-                })
-            )
-        })
-        Promise.all(promises).then(() => (this.mainStore.is_loading = false))
+
+        let av_cat_array = Object.keys(authorised_values).map(function(av_cat){return "\""+authorised_values[av_cat]+"\""});
+
+        av_client.values.getCategoriesWithValues(av_cat_array).then(av_categories => {
+            Object.entries(authorised_values).forEach(([av_var, av_cat]) => {
+                const av_match = av_categories.find(element => element.category_name ==  av_cat);
+                this.AVStore[av_var] = av_match.authorised_values;
+
+            })
+        }).then(() => (this.mainStore.is_loading = false));
     },
     components: {
         Breadcrumb,
diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js
index 639d8cf99f..bd3887af53 100644
--- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js
+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/authorised-values.js
@@ -3,16 +3,20 @@ import HttpClient from "./http-client";
 export class AVAPIClient extends HttpClient {
     constructor() {
         super({
-            baseURL: "/api/v1/authorised_value_categories/",
+            baseURL: "/api/v1/authorised_value_categories",
         });
     }
 
     get values() {
         return {
-            getAll: (category_name, query) =>
+            getCategoriesWithValues: (cat_array) =>
                 this.get({
-                    endpoint: category_name + "/values?" + (query || "_per_page=-1"),
-                }),
+                    endpoint: "?q={\"me.category_name\":["+(cat_array.join(", "))+"]}",
+                    headers: {
+                        "x-koha-embed":
+                            "authorised_values",
+                    },
+            }),
         };
     }
 }
-- 
2.30.2