Bug 32898: Remove unecessary async/await
[koha-ffzg.git] / koha-tmpl / intranet-tmpl / prog / js / vue / fetch.js
1 import { setError } from "./messages";
2
3 export const fetchAgreement = function (agreement_id) {
4     if (!agreement_id) return;
5     const apiUrl = "/api/v1/erm/agreements/" + agreement_id;
6     return myFetch(apiUrl, {
7         headers: {
8             "x-koha-embed":
9                 "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
10         },
11     });
12 };
13
14 export const fetchAgreements = function () {
15     const apiUrl = "/api/v1/erm/agreements?_per_page=-1";
16     return myFetch(apiUrl);
17 };
18
19 export const fetchLicense = function (license_id) {
20     if (!license_id) return;
21     const apiUrl = "/api/v1/erm/licenses/" + license_id;
22     return myFetch(apiUrl, {
23         headers: {
24             "x-koha-embed": "user_roles,user_roles.patron,vendor,documents",
25         },
26     });
27 };
28
29 export const fetchLicenses = function () {
30     const apiUrl = "/api/v1/erm/licenses?_per_page=-1";
31     return myFetch(apiUrl, {
32         headers: {
33             "x-koha-embed": "vendor.name",
34         },
35     });
36 };
37
38 export const fetchPatron = function (patron_id) {
39     if (!patron_id) return;
40     const apiUrl = "/api/v1/patrons/" + patron_id;
41     return myFetch(apiUrl);
42 };
43
44 export const fetchVendors = function () {
45     const apiUrl = "/api/v1/acquisitions/vendors?_per_page=-1";
46     return myFetch(apiUrl);
47 };
48
49 const _createEditPackage = function (method, erm_package) {
50     let apiUrl = "/api/v1/erm/eholdings/local/packages";
51
52     if (method == "PUT") {
53         apiUrl += "/" + erm_package.package_id;
54     }
55     delete erm_package.package_id;
56     delete erm_package.resources;
57     delete erm_package.vendor;
58     delete erm_package.resources_count;
59     delete erm_package.is_selected;
60
61     erm_package.package_agreements = erm_package.package_agreements.map(
62         ({ package_id, agreement, ...keepAttrs }) => keepAttrs
63     );
64
65     const options = {
66         method: method,
67         body: JSON.stringify(erm_package),
68         headers: {
69             "Content-Type": "application/json;charset=utf-8",
70         },
71     };
72
73     return myFetch(apiUrl, options, 1);
74 };
75
76 export const createPackage = function (erm_package) {
77     return _createEditPackage("POST", erm_package);
78 };
79 export const editPackage = function (erm_package) {
80     return _createEditPackage("PUT", erm_package);
81 };
82
83 const _fetchPackage = function (apiUrl, package_id) {
84     if (!package_id) return;
85     return myFetch(apiUrl, {
86         headers: {
87             "x-koha-embed":
88                 "package_agreements,package_agreements.agreement,resources+count,vendor",
89         },
90     });
91 };
92 export const fetchLocalPackage = function (package_id) {
93     const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
94     return _fetchPackage(apiUrl, package_id);
95 };
96 export const fetchEBSCOPackage = function (package_id) {
97     const apiUrl = "/api/v1/erm/eholdings/ebsco/packages/" + package_id;
98     return _fetchPackage(apiUrl, package_id);
99 };
100
101 export const _fetchPackages = function (apiUrl) {
102     return myFetch(apiUrl, {
103         headers: {
104             "x-koha-embed": "resources+count,vendor.name",
105         },
106     });
107 };
108 export const fetchLocalPackages = function () {
109     const apiUrl = "/api/v1/erm/eholdings/local/packages?_per_page=-1";
110     return _fetchPackages(apiUrl);
111 };
112 export const fetchEBSCOPackages = function () {
113     const apiUrl = "/api/v1/erm/eholdings/ebsco/packages";
114     return _fetchPackages(apiUrl);
115 };
116
117 export const fetchLocalPackageCount = function (filters) {
118     const q = filters
119         ? {
120               "me.name": { like: "%" + filters.package_name + "%" },
121               ...(filters.content_type
122                   ? { "me.content_type": filters.content_type }
123                   : {}),
124           }
125         : {};
126
127     const params = {
128         _page: 1,
129         _per_page: 1,
130         q: JSON.stringify(q),
131     };
132     var apiUrl = "/api/v1/erm/eholdings/local/packages";
133     return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
134 };
135
136 export const _fetchTitle = function (apiUrl, title_id) {
137     if (!title_id) return;
138     return myFetch(apiUrl, {
139         headers: {
140             "x-koha-embed": "resources,resources.package",
141         },
142     });
143 };
144 export const fetchLocalTitle = function (title_id) {
145     const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
146     return _fetchTitle(apiUrl, title_id);
147 };
148 export const fetchEBSCOTitle = function (title_id) {
149     const apiUrl = "/api/v1/erm/eholdings/ebsco/titles/" + title_id;
150     return _fetchTitle(apiUrl, title_id);
151 };
152
153 export const fetchLocalTitleCount = function (filters) {
154     const q = filters
155         ? {
156               ...(filters.publication_title
157                   ? {
158                         "me.publication_title": {
159                             like: "%" + filters.publication_title + "%",
160                         },
161                     }
162                   : {}),
163               ...(filters.publication_type
164                   ? { "me.publication_type": filters.publication_type }
165                   : {}),
166           }
167         : undefined;
168     const params = {
169         _page: 1,
170         _per_page: 1,
171         ...(q ? { q: JSON.stringify(q) } : {}),
172     };
173     var apiUrl = "/api/v1/erm/eholdings/local/titles";
174     return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
175 };
176
177 export const _fetchResource = function (apiUrl, resource_id) {
178     if (!resource_id) return;
179     return myFetch(apiUrl, {
180         headers: {
181             "x-koha-embed": "title,package,vendor",
182         },
183     });
184 };
185 export const fetchLocalResource = function (resource_id) {
186     const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
187     return _fetchResource(apiUrl, resource_id);
188 };
189 export const fetchEBSCOResource = function (resource_id) {
190     const apiUrl = "/api/v1/erm/eholdings/ebsco/resources/" + resource_id;
191     return _fetchResource(apiUrl, resource_id);
192 };
193
194 export const _fetchResources = async function (apiUrl) {
195     return await myFetch(apiUrl);
196 };
197
198 export const fetchLocalResources = function () {
199     const apiUrl = "/api/v1/erm/eholdings/local/resources";
200     return _fetchResources(apiUrl);
201 };
202 export const fetchEBSCOResources = function () {
203     const apiUrl = "/api/v1/erm/eholdings/ebsco/resources";
204     return _fetchResources(apiUrl);
205 };
206
207 export const myFetch = async function (url, options, return_response) {
208     let r;
209     await fetch(url, options || {})
210         .then((response) => checkError(response, return_response))
211         .then(
212             (result) => {
213                 r = result;
214             },
215             (error) => {
216                 setError(error.toString());
217             }
218         )
219         .catch((error) => {
220             setError(error);
221         });
222     return r;
223 };
224 export const myFetchTotal = async function (url, options) {
225     let r;
226     await myFetch(url, options, 1).then(
227         (response) => {
228             if (response) {
229                 r = response.headers.get("X-Total-Count");
230             }
231         },
232         (error) => {
233             setError(error.toString());
234         }
235     );
236     return r;
237 };
238
239 export const checkError = function (response, return_response) {
240     if (response.status >= 200 && response.status <= 299) {
241         return return_response ? response : response.json();
242     } else {
243         console.log("Server returned an error:");
244         console.log(response);
245         throw Error("%s (%s)".format(response.statusText, response.status));
246     }
247 };