2 * Common code for mananging holdings
4 import {Injectable, EventEmitter} from '@angular/core';
5 import {IdlObject, IdlService} from '@eg/core/idl.service';
6 import {NetService} from '@eg/core/net.service';
7 import {AnonCacheService} from '@eg/share/util/anon-cache.service';
8 import {PcrudService} from '@eg/core/pcrud.service';
9 import {AuthService} from '@eg/core/auth.service';
10 import {IdlObject} from '@eg/core/idl.service';
11 import {EventService} from '@eg/core/event.service';
12 import {PcrudService} from '@eg/core/pcrud.service';
14 export interface CallNumData {
23 export class HoldingsService {
26 private net: NetService,
27 private auth: AuthService,
28 private pcrud: PcrudService,
29 private evt: EventService,
30 private anonCache: AnonCacheService
33 // Open the holdings editor UI in a new browser window/tab.
35 recordId: number, // Bib record ID
36 editExistingCallNums?: number[], // Add copies to / modify existing CNs
37 newCallNumData?: CallNumData[], // Creating new call numbers
38 editCopyIds?: number[], // Edit existing items
39 hideCopies?: boolean, // Hide the copy edit pane
42 const raw: any[] = [];
44 if (editExistingCallNums) {
45 editExistingCallNums.forEach(
46 callNumId => raw.push({callnumber: callNumId}));
47 } else if (newCallNumData) {
48 newCallNumData.forEach(data => raw.push(data));
51 this.anonCache.setItem(null, 'edit-these-copies', {
55 hide_vols : hideVols === true,
56 hide_copies : hideCopies === true
59 console.error('Could not create holds cache key!');
63 const tab = hideVols ? 'attrs' : 'holdings';
64 const url = `/eg2/staff/cat/volcopy/${tab}/session/${key}`;
65 window.open(url, '_blank');
70 // Using open-ils.actor.get_barcodes
71 getItemIdFromBarcode(barcode: string): Promise<number> {
72 return this.net.request(
74 'open-ils.actor.get_barcodes',
75 this.auth.token(), this.auth.user().ws_ou(), 'asset', barcode
76 ).toPromise().then(resp => {
77 if (this.evt.parse(resp)) {
78 return Promise.reject(resp);
79 } else if (resp.length === 0) {
87 /* TODO: make these more configurable per lp1616170 */
88 getMagicCopyStatuses(): Promise<number[]> {
89 return Promise.resolve([
95 18 // Canceled Transit