Bug 34587: Accept date inputs upon confirming 'run now' button
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / vue / fetch / erm-api-client.js
1 import HttpClient from "./http-client";
2
3 export class ERMAPIClient extends HttpClient {
4     constructor() {
5         super({
6             baseURL: "/api/v1/erm/",
7         });
8     }
9
10     get config() {
11         return {
12             get: () =>
13                 this.get({
14                     endpoint: "config",
15                 }),
16         };
17     }
18
19     get agreements() {
20         return {
21             get: id =>
22                 this.get({
23                     endpoint: "agreements/" + id,
24                     headers: {
25                         "x-koha-embed":
26                             "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents,agreement_packages,agreement_packages.package,vendor",
27                     },
28                 }),
29             getAll: (query, params) =>
30                 this.getAll({
31                     endpoint: "agreements",
32                     query,
33                     params,
34                 }),
35             delete: id =>
36                 this.delete({
37                     endpoint: "agreements/" + id,
38                 }),
39             create: agreement =>
40                 this.post({
41                     endpoint: "agreements",
42                     body: agreement,
43                 }),
44             update: (agreement, id) =>
45                 this.put({
46                     endpoint: "agreements/" + id,
47                     body: agreement,
48                 }),
49             count: (query = {}) =>
50                 this.count({
51                     endpoint:
52                         "agreements?" +
53                         new URLSearchParams({
54                             _page: 1,
55                             _per_page: 1,
56                             ...(query && { q: JSON.stringify(query) }),
57                         }),
58                 }),
59         };
60     }
61
62     get licenses() {
63         return {
64             get: id =>
65                 this.get({
66                     endpoint: "licenses/" + id,
67                     headers: {
68                         "x-koha-embed":
69                             "user_roles,user_roles.patron,vendor,documents",
70                     },
71                 }),
72             getAll: (query, params) =>
73                 this.getAll({
74                     endpoint: "licenses",
75                     query,
76                     params,
77                     headers: {
78                         "x-koha-embed": "vendor",
79                     },
80                 }),
81             delete: id =>
82                 this.delete({
83                     endpoint: "licenses/" + id,
84                 }),
85             create: license =>
86                 this.post({
87                     endpoint: "licenses",
88                     body: license,
89                 }),
90             update: (license, id) =>
91                 this.put({
92                     endpoint: "licenses/" + id,
93                     body: license,
94                 }),
95             count: (query = {}) =>
96                 this.count({
97                     endpoint:
98                         "licenses?" +
99                         new URLSearchParams({
100                             _page: 1,
101                             _per_page: 1,
102                             ...(query && { q: JSON.stringify(query) }),
103                         }),
104                 }),
105         };
106     }
107
108     get localPackages() {
109         return {
110             get: id =>
111                 this.get({
112                     endpoint: "eholdings/local/packages/" + id,
113                     headers: {
114                         "x-koha-embed":
115                             "package_agreements,package_agreements.agreement,resources+count,vendor",
116                     },
117                 }),
118             getAll: (query, params) =>
119                 this.getAll({
120                     endpoint: "eholdings/local/packages",
121                     query,
122                     params,
123                     headers: {
124                         "x-koha-embed": "resources+count,vendor.name",
125                     },
126                 }),
127             delete: id =>
128                 this.delete({
129                     endpoint: "eholdings/local/packages/" + id,
130                 }),
131             create: local_package =>
132                 this.post({
133                     endpoint: "eholdings/local/packages",
134                     body: local_package,
135                 }),
136             update: (local_package, id) =>
137                 this.put({
138                     endpoint: "eholdings/local/packages/" + id,
139                     body: local_package,
140                 }),
141             count: (query = {}) =>
142                 this.count({
143                     endpoint:
144                         "eholdings/local/packages?" +
145                         new URLSearchParams({
146                             _page: 1,
147                             _per_page: 1,
148                             ...(query && { q: JSON.stringify(query) }),
149                         }),
150                 }),
151         };
152     }
153
154     get localTitles() {
155         return {
156             get: id =>
157                 this.get({
158                     endpoint: "eholdings/local/titles/" + id,
159                     headers: {
160                         "x-koha-embed": "resources,resources.package",
161                     },
162                 }),
163             delete: id =>
164                 this.delete({
165                     endpoint: "eholdings/local/titles/" + id,
166                 }),
167             create: local_package =>
168                 this.post({
169                     endpoint: "eholdings/local/titles",
170                     body: local_package,
171                 }),
172             update: (local_package, id) =>
173                 this.put({
174                     endpoint: "eholdings/local/titles/" + id,
175                     body: local_package,
176                 }),
177             count: (query = {}) =>
178                 this.count({
179                     endpoint:
180                         "eholdings/local/titles?" +
181                         new URLSearchParams({
182                             _page: 1,
183                             _per_page: 1,
184                             ...(query && { q: JSON.stringify(query) }),
185                         }),
186                 }),
187             import: body =>
188                 this.post({
189                     endpoint: "eholdings/local/titles/import",
190                     body,
191                 }),
192         };
193     }
194
195     get localResources() {
196         return {
197             get: id =>
198                 this.get({
199                     endpoint: "eholdings/local/resources/" + id,
200                     headers: {
201                         "x-koha-embed": "title,package,vendor",
202                     },
203                 }),
204         };
205     }
206
207     get EBSCOPackages() {
208         return {
209             get: id =>
210                 this.get({
211                     endpoint: "eholdings/ebsco/packages/" + id,
212                     headers: {
213                         "x-koha-embed":
214                             "package_agreements,package_agreements.agreement,resources+count,vendor",
215                     },
216                 }),
217             patch: (id, body) =>
218                 this.patch({
219                     endpoint: "eholdings/ebsco/packages/" + id,
220                     body,
221                 }),
222         };
223     }
224
225     get EBSCOTitles() {
226         return {
227             get: id =>
228                 this.get({
229                     endpoint: "eholdings/ebsco/titles/" + id,
230                     headers: {
231                         "x-koha-embed": "resources,resources.package",
232                     },
233                 }),
234         };
235     }
236
237     get EBSCOResources() {
238         return {
239             get: id =>
240                 this.get({
241                     endpoint: "eholdings/ebsco/resources/" + id,
242                     headers: {
243                         "x-koha-embed": "title,package,vendor",
244                     },
245                 }),
246             patch: (id, body) =>
247                 this.patch({
248                     endpoint: "eholdings/ebsco/resources/" + id,
249                     body,
250                 }),
251         };
252     }
253
254     get usage_data_providers() {
255         return {
256             get: id =>
257                 this.get({
258                     endpoint: "usage_data_providers/" + id,
259                 }),
260             getAll: query =>
261                 this.get({
262                     endpoint: "usage_data_providers",
263                     query,
264                     query,
265                 }),
266             delete: id =>
267                 this.delete({
268                     endpoint: "usage_data_providers/" + id,
269                 }),
270             create: usage_data_provider =>
271                 this.post({
272                     endpoint: "usage_data_providers",
273                     body: usage_data_provider,
274                 }),
275             update: (usage_data_provider, id) =>
276                 this.put({
277                     endpoint: "usage_data_providers/" + id,
278                     body: usage_data_provider,
279                 }),
280             run: (id, body) =>
281                 this.post({
282                     endpoint: "usage_data_providers/" + id + "/run",
283                     body: body,
284                 }),
285             test: id =>
286                 this.get({
287                     endpoint: "usage_data_providers/" + id + "/test_connection",
288                 }),
289             count: (query = {}) =>
290                 this.count({
291                     endpoint:
292                         "usage_data_providers?" +
293                         new URLSearchParams({
294                             _page: 1,
295                             _per_page: 1,
296                             ...(query && { q: JSON.stringify(query) }),
297                         }),
298                 }),
299         };
300     }
301
302     get counter_files() {
303         return {
304             delete: id =>
305                 this.delete({
306                     endpoint: "counter_files/" + id,
307                 }),
308             count: (query = {}) =>
309                 this.count({
310                     endpoint:
311                         "counter_files?" +
312                         new URLSearchParams({
313                             _page: 1,
314                             _per_page: 1,
315                             ...(query && { q: JSON.stringify(query) }),
316                         }),
317                 }),
318         };
319     }
320
321     get default_usage_reports() {
322         return {
323             getAll: query =>
324                 this.get({
325                     endpoint: "default_usage_reports",
326                     query,
327                 }),
328             create: default_usage_report =>
329                 this.post({
330                     endpoint: "default_usage_reports",
331                     body: default_usage_report,
332                 }),
333             delete: id =>
334                 this.delete({
335                     endpoint: "default_usage_reports/" + id,
336                 }),
337         };
338     }
339
340     get usage_platforms() {
341         return {
342             getAll: query =>
343                 this.getAll({
344                     endpoint: "usage_platforms",
345                     query: query,
346                 }),
347             count: (query = {}) =>
348                 this.count({
349                     endpoint:
350                         "usage_platforms?" +
351                         new URLSearchParams({
352                             _page: 1,
353                             _per_page: 1,
354                             ...(query && { q: JSON.stringify(query) }),
355                         }),
356                 }),
357         };
358     }
359
360     get usage_items() {
361         return {
362             getAll: query =>
363                 this.getAll({
364                     endpoint: "usage_items",
365                     query: query,
366                 }),
367             count: (query = {}) =>
368                 this.count({
369                     endpoint:
370                         "usage_items?" +
371                         new URLSearchParams({
372                             _page: 1,
373                             _per_page: 1,
374                             ...(query && { q: JSON.stringify(query) }),
375                         }),
376                 }),
377         };
378     }
379
380     get usage_databases() {
381         return {
382             getAll: query =>
383                 this.getAll({
384                     endpoint: "usage_databases",
385                     query: query,
386                 }),
387             count: (query = {}) =>
388                 this.count({
389                     endpoint:
390                         "usage_databases?" +
391                         new URLSearchParams({
392                             _page: 1,
393                             _per_page: 1,
394                             ...(query && { q: JSON.stringify(query) }),
395                         }),
396                 }),
397         };
398     }
399
400     get usage_titles() {
401         return {
402             getAll: query =>
403                 this.getAll({
404                     endpoint: "usage_titles",
405                     query: query,
406                 }),
407             count: (query = {}) =>
408                 this.count({
409                     endpoint:
410                         "usage_titles?" +
411                         new URLSearchParams({
412                             _page: 1,
413                             _per_page: 1,
414                             ...(query && { q: JSON.stringify(query) }),
415                         }),
416                 }),
417         };
418     }
419 }
420
421 export default ERMAPIClient;