1 import { setError } from "./messages";
3 export const fetchAgreement = async function (agreement_id) {
4 if (!agreement_id) return;
5 const apiUrl = "/api/v1/erm/agreements/" + agreement_id;
10 "periods,user_roles,user_roles.patron,agreement_licenses,agreement_licenses.license,agreement_relationships,agreement_relationships.related_agreement,documents",
25 export const fetchAgreements = async function () {
26 const apiUrl = "/api/v1/erm/agreements";
41 export const fetchLicense = async function (license_id) {
42 if (!license_id) return;
43 const apiUrl = "/api/v1/erm/licenses/" + license_id;
58 export const fetchLicenses = async function () {
59 const apiUrl = "/api/v1/erm/licenses";
74 export const fetchPatron = async function (patron_id) {
75 if (!patron_id) return;
76 const apiUrl = "/api/v1/patrons/" + patron_id;
91 export const fetchVendors = async function () {
92 const apiUrl = "/api/v1/acquisitions/vendors";
107 const _createEditPackage = async function (method, erm_package) {
108 let apiUrl = "/api/v1/erm/eholdings/local/packages";
110 if (method == "PUT") {
111 apiUrl += "/" + erm_package.package_id;
113 delete erm_package.package_id;
114 delete erm_package.resources;
115 delete erm_package.vendor;
116 delete erm_package.resources_count;
117 delete erm_package.is_selected;
119 erm_package.package_agreements = erm_package.package_agreements.map(
120 ({ package_id, agreement, ...keepAttrs }) => keepAttrs
125 body: JSON.stringify(erm_package),
127 "Content-Type": "application/json;charset=utf-8",
132 await fetch(apiUrl, options)
147 export const createPackage = function (erm_package) {
148 return _createEditPackage("POST", erm_package);
150 export const editPackage = function (erm_package) {
151 return _createEditPackage("PUT", erm_package);
154 const _fetchPackage = async function (apiUrl, package_id) {
155 if (!package_id) return;
157 await fetch(apiUrl, {
160 "package_agreements,package_agreements.agreement,resources+count,vendor",
166 erm_package = result;
174 export const fetchLocalPackage = function (package_id) {
175 const apiUrl = "/api/v1/erm/eholdings/local/packages/" + package_id;
176 return _fetchPackage(apiUrl, package_id);
178 export const fetchEBSCOPackage = function (package_id) {
179 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages/" + package_id;
180 return _fetchPackage(apiUrl, package_id);
183 export const _fetchPackages = async function (apiUrl) {
185 await fetch(apiUrl, {
187 "x-koha-embed": "resources+count,vendor.name",
201 export const fetchLocalPackages = function () {
202 const apiUrl = "/api/v1/erm/eholdings/local/packages";
203 return _fetchPackages(apiUrl);
205 export const fetchEBSCOPackages = function () {
206 const apiUrl = "/api/v1/erm/eholdings/ebsco/packages";
207 return _fetchPackages(apiUrl);
210 export const fetchCountLocalPackages = async function (filters) {
212 "me.name": { like: "%" + filters.package_name + "%" },
213 ...(filters.content_type
214 ? { "me.content_type": filters.content_type }
221 q: JSON.stringify(q),
223 let count_local_packages;
224 var apiUrl = "/api/v1/erm/eholdings/local/packages";
225 await fetch(apiUrl + "?" + new URLSearchParams(params))
229 (count_local_packages = response.headers.get("X-Total-Count"))
231 return count_local_packages;
234 export const _fetchTitle = async function (apiUrl, title_id) {
235 if (!title_id) return;
237 await fetch(apiUrl, {
239 "x-koha-embed": "resources,resources.package",
253 export const fetchLocalTitle = function (title_id) {
254 const apiUrl = "/api/v1/erm/eholdings/local/titles/" + title_id;
255 return _fetchTitle(apiUrl, title_id);
257 export const fetchEBSCOTitle = function (title_id) {
258 const apiUrl = "/api/v1/erm/eholdings/ebsco/titles/" + title_id;
259 return _fetchTitle(apiUrl, title_id);
262 export const _fetchTitles = async function (apiUrl) {
276 export const fetchLocalTitles = function () {
277 const apiUrl = "/api/v1/erm/eholdings/local/titles";
278 return _fetchTitles(apiUrl);
280 export const fetchEBSCOTitles = function () {
281 const apiUrl = "/api/v1/erm/eholdings/ebsco/titles";
282 return _fetchTitles(apiUrl);
285 export const fetchCountLocalTitles = async function (filters) {
287 "me.publication_title": {
288 like: "%" + filters.publication_title + "%",
290 ...(filters.publication_type
291 ? { "me.publication_type": filters.publication_type }
297 q: JSON.stringify(q),
299 let count_local_titles;
300 var apiUrl = "/api/v1/erm/eholdings/local/titles";
301 await fetch(apiUrl + "?" + new URLSearchParams(params))
305 (count_local_titles = response.headers.get("X-Total-Count"))
307 return count_local_titles;
310 export const _fetchResource = async function (apiUrl, resource_id) {
311 if (!resource_id) return;
313 await fetch(apiUrl, {
315 "x-koha-embed": "title,package,vendor",
329 export const fetchLocalResource = function (resource_id) {
330 const apiUrl = "/api/v1/erm/eholdings/local/resources/" + resource_id;
331 return _fetchResource(apiUrl, resource_id);
333 export const fetchEBSCOResource = function (resource_id) {
334 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources/" + resource_id;
335 return _fetchResource(apiUrl, resource_id);
338 export const _fetchResources = async function (apiUrl) {
353 export const fetchLocalResources = function () {
354 const apiUrl = "/api/v1/erm/eholdings/local/resources";
355 return _fetchResources(apiUrl);
357 export const fetchEBSCOResources = function () {
358 const apiUrl = "/api/v1/erm/eholdings/ebsco/resources";
359 return _fetchResources(apiUrl);
362 function checkError(response) {
363 if (response.status >= 200 && response.status <= 299) {
364 return response.json();
366 console.log("Server returned an error:");
367 console.log(response);
368 setError("%s (%s)".format(response.statusText, response.status));