1 import { setError } from "./messages";
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, {
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",
14 export const fetchAgreements = function () {
15 const apiUrl = "/api/v1/erm/agreements?_per_page=-1";
16 return myFetch(apiUrl);
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, {
24 "x-koha-embed": "user_roles,user_roles.patron,vendor,documents",
29 export const fetchLicenses = function () {
30 const apiUrl = "/api/v1/erm/licenses?_per_page=-1";
31 return myFetch(apiUrl, {
33 "x-koha-embed": "vendor.name",
38 export const fetchPatron = function (patron_id) {
39 if (!patron_id) return;
40 const apiUrl = "/api/v1/patrons/" + patron_id;
41 return myFetch(apiUrl);
44 export const fetchVendors = function () {
45 const apiUrl = "/api/v1/acquisitions/vendors?_per_page=-1";
46 return myFetch(apiUrl);
49 const _createEditPackage = function (method, erm_package) {
50 let apiUrl = "/api/v1/erm/eholdings/local/packages";
52 if (method == "PUT") {
53 apiUrl += "/" + erm_package.package_id;
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;
61 erm_package.package_agreements = erm_package.package_agreements.map(
62 ({ package_id, agreement, ...keepAttrs }) => keepAttrs
67 body: JSON.stringify(erm_package),
69 "Content-Type": "application/json;charset=utf-8",
73 return myFetch(apiUrl, options, 1);
76 export const createPackage = function (erm_package) {
77 return _createEditPackage("POST", erm_package);
79 export const editPackage = function (erm_package) {
80 return _createEditPackage("PUT", erm_package);
83 const _fetchPackage = function (apiUrl, package_id) {
84 if (!package_id) return;
85 return myFetch(apiUrl, {
88 "package_agreements,package_agreements.agreement,resources+count,vendor",
92 export const fetchLocalPackage = function (package_id) {
93 const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
94 return _fetchPackage(apiUrl, package_id);
96 export const fetchEBSCOPackage = function (package_id) {
97 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages/" + package_id;
98 return _fetchPackage(apiUrl, package_id);
101 export const _fetchPackages = function (apiUrl) {
102 return myFetch(apiUrl, {
104 "x-koha-embed": "resources+count,vendor.name",
108 export const fetchLocalPackages = function () {
109 const apiUrl = "/api/v1/erm/eholdings/local/packages?_per_page=-1";
110 return _fetchPackages(apiUrl);
112 export const fetchEBSCOPackages = function () {
113 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages";
114 return _fetchPackages(apiUrl);
117 export const fetchLocalPackageCount = function (filters) {
120 "me.name": { like: "%" + filters.package_name + "%" },
121 ...(filters.content_type
122 ? { "me.content_type": filters.content_type }
130 q: JSON.stringify(q),
132 var apiUrl = "/api/v1/erm/eholdings/local/packages";
133 return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
136 export const _fetchTitle = function (apiUrl, title_id) {
137 if (!title_id) return;
138 return myFetch(apiUrl, {
140 "x-koha-embed": "resources,resources.package",
144 export const fetchLocalTitle = function (title_id) {
145 const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
146 return _fetchTitle(apiUrl, title_id);
148 export const fetchEBSCOTitle = function (title_id) {
149 const apiUrl = "/api/v1/erm/eholdings/ebsco/titles/" + title_id;
150 return _fetchTitle(apiUrl, title_id);
153 export const fetchLocalTitleCount = function (filters) {
156 ...(filters.publication_title
158 "me.publication_title": {
159 like: "%" + filters.publication_title + "%",
163 ...(filters.publication_type
164 ? { "me.publication_type": filters.publication_type }
171 ...(q ? { q: JSON.stringify(q) } : {}),
173 var apiUrl = "/api/v1/erm/eholdings/local/titles";
174 return myFetchTotal(apiUrl + "?" + new URLSearchParams(params));
177 export const _fetchResource = function (apiUrl, resource_id) {
178 if (!resource_id) return;
179 return myFetch(apiUrl, {
181 "x-koha-embed": "title,package,vendor",
185 export const fetchLocalResource = function (resource_id) {
186 const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
187 return _fetchResource(apiUrl, resource_id);
189 export const fetchEBSCOResource = function (resource_id) {
190 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources/" + resource_id;
191 return _fetchResource(apiUrl, resource_id);
194 export const _fetchResources = async function (apiUrl) {
195 return await myFetch(apiUrl);
198 export const fetchLocalResources = function () {
199 const apiUrl = "/api/v1/erm/eholdings/local/resources";
200 return _fetchResources(apiUrl);
202 export const fetchEBSCOResources = function () {
203 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources";
204 return _fetchResources(apiUrl);
207 export const myFetch = async function (url, options, return_response) {
209 await fetch(url, options || {})
210 .then((response) => checkError(response, return_response))
216 setError(error.toString());
224 export const myFetchTotal = async function (url, options) {
226 await myFetch(url, options, 1).then(
229 r = response.headers.get("X-Total-Count");
233 setError(error.toString());
239 export const checkError = function (response, return_response) {
240 if (response.status >= 200 && response.status <= 299) {
241 return return_response ? response : response.json();
243 console.log("Server returned an error:");
244 console.log(response);
245 throw Error("%s (%s)".format(response.statusText, response.status));