2 * Common code for mananging holdings
4 import {Injectable, EventEmitter} from '@angular/core';
5 import {NetService} from '@eg/core/net.service';
6 import {AnonCacheService} from '@eg/share/util/anon-cache.service';
7 import {PcrudService} from '@eg/core/pcrud.service';
8 import {AuthService} from '@eg/core/auth.service';
9 import {IdlObject} from '@eg/core/idl.service';
10 import {EventService} from '@eg/core/event.service';
12 interface NewCallNumData {
20 export class HoldingsService {
23 private net: NetService,
24 private auth: AuthService,
25 private pcrud: PcrudService,
26 private evt: EventService,
27 private anonCache: AnonCacheService
30 // Open the holdings editor UI in a new browser window/tab.
32 recordId: number, // Bib record ID
33 editExistingCallNums?: number[], // Add copies to / modify existing CNs
34 newCallNumData?: NewCallNumData[], // Creating new call numbers
35 editCopyIds?: number[], // Edit existing items
36 hideCopies?: boolean, // Hide the copy edit pane
39 const raw: any[] = [];
41 if (editExistingCallNums) {
42 editExistingCallNums.forEach(
43 callNumId => raw.push({callnumber: callNumId}));
44 } else if (newCallNumData) {
45 newCallNumData.forEach(data => raw.push(data));
48 this.anonCache.setItem(null, 'edit-these-copies', {
52 hide_vols : hideVols === true,
53 hide_copies : hideCopies === true
56 console.error('Could not create holds cache key!');
60 const url = `/eg/staff/cat/volcopy/${key}`;
61 window.open(url, '_blank');
66 // Using open-ils.actor.get_barcodes
67 getItemIdFromBarcode(barcode: string): Promise<number> {
68 return this.net.request(
70 'open-ils.actor.get_barcodes',
71 this.auth.token(), this.auth.user().ws_ou(), 'asset', barcode
72 ).toPromise().then(resp => {
73 if (this.evt.parse(resp)) {
74 return Promise.reject(resp);
75 } else if (resp.length === 0) {