From: Llewellyn Marshall Date: Wed, 31 Aug 2022 19:12:40 +0000 (-0400) Subject: grab destination and source addresses in one pcrud call and store in the env X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=5cc6a9cdaee1453b2731ecac6f027db8cffc7cbe;p=working%2FEvergreen.git grab destination and source addresses in one pcrud call and store in the env Signed-off-by: Terran McCanna --- diff --git a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js index 9b13ed3f59..1f849dbf57 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/services/circ.js +++ b/Open-ILS/web/js/ui/default/staff/circ/services/circ.js @@ -715,6 +715,19 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog, egAddCopyAl return egCore.env.aoa.map[addr_id]; }); } + + //retrieve addresses from multiple org units + service.cache_org_addr = function (org_ids, addr_type) { + var addr_ids = []; + org_ids.forEach(function(org_id){ + var org = egCore.org.get(org_id); + var addr_id = org[addr_type](); + if(addr_id)addr_ids.push(addr_id); + }); + return egCore.pcrud.search('aoa', {id: addr_ids},{},{ atomic: true}).then(function(addrs) { + return egCore.env.absorbList(addrs, 'aoa'); + }); + } service.exit_alert = function(msg, scope) { return egAlertDialog.open(msg, scope).result.then( @@ -1766,27 +1779,48 @@ function($uibModal , $q , egCore , egAlertDialog , egConfirmDialog, egAddCopyAl } } - // collect transit, address, and hold info that's not already + // collect transit, addresses, and hold info that's not already // included in responses. service.collect_route_data = function(tmpl, evt, params, options) { if (angular.isArray(evt)) evt = evt[0]; var promises = []; var data = {}; - + var addr_deferred = $q.defer(); + // associates org units with the address they're needed for + var addr_orgs = {}; + promises.push(addr_deferred.promise); + if (evt.org && !tmpl.match(/hold_shelf/)) { - promises.push( - service.get_org_addr(evt.org, 'holds_address') - .then(function(addr) { data.address = addr }) - ); + addr_orgs['address'] = evt.org; } if(evt.payload.transit){ - promises.push( - service.get_org_addr(evt.payload.transit.source().id(), 'holds_address') - .then(function(addr) { data.source_address = addr }) - ); + addr_orgs['source_address'] = evt.payload.transit.source().id(); } + if(Object.keys(addr_orgs).length){ + promises.push( + service.cache_org_addr(Object.values(addr_orgs),'holds_address') + .then(function(){ + // promise to assign all of the addresses we need + var addr_promises = []; + Object.keys(addr_orgs).forEach(function(key){ + addr_promises.push( + service.get_org_addr(addr_orgs[key], 'holds_address') + .then(function(addr) { + // assign address to field in data + data[key] = addr; + }) + ) + }); + $q.all(addr_promises).then(addr_deferred.resolve()); + })); + } + else{ + // no addresses are needed so continue + addr_deferred.resolve(); + } + if (evt.payload.hold) { promises.push( egCore.pcrud.retrieve('au',