1 package OpenILS::Application::Storage::Publisher::asset;
2 use base qw/OpenILS::Application::Storage/;
3 #use OpenILS::Application::Storage::CDBI::asset;
4 #use OpenSRF::Utils::Logger qw/:level/;
5 #use OpenILS::Utils::Fieldmapper;
7 #my $log = 'OpenSRF::Utils::Logger';
9 sub asset_copy_location_all {
13 for my $rec ( asset::copy_location->retrieve_all ) {
14 $client->respond( $rec->to_fieldmapper );
19 __PACKAGE__->register_method(
20 method => 'asset_copy_location_all',
21 api_name => 'open-ils.storage.direct.asset.copy_location.retrieve.all',
31 return undef unless (@ids);
33 @ids = ($ids[0]) unless ($self->api_name =~ /batch/o);
37 my $cp = asset::copy->retrieve($id);
39 my $cp_fm = $cp->to_fieldmapper;
40 $cp_fm->circ_lib( $cp->circ_lib->to_fieldmapper );
41 $cp_fm->location( $cp->location->to_fieldmapper );
42 $cp_fm->status( $cp->status->to_fieldmapper );
44 for my $map ( $cp->stat_cat_entry_copy_maps ) {
45 push @scs, $map->to_fieldmapper;
47 $cp_fm->stat_cat_entries( \@scs );
49 $client->respond( $cp_fm );
54 __PACKAGE__->register_method(
55 api_name => 'open-ils.storage.fleshed.asset.copy.batch.retrieve',
56 method => 'fleshed_copy',
60 __PACKAGE__->register_method(
61 api_name => 'open-ils.storage.fleshed.asset.copy.retrieve',
62 method => 'fleshed_copy',
66 sub fleshed_copy_by_barcode {
71 my ($cp) = asset::copy->search( { barcode => $bc } );
73 my $cp_fm = $cp->to_fieldmapper;
74 $cp_fm->circ_lib( $cp->circ_lib->to_fieldmapper );
75 $cp_fm->location( $cp->location->to_fieldmapper );
76 $cp_fm->status( $cp->status->to_fieldmapper );
80 __PACKAGE__->register_method(
81 api_name => 'open-ils.storage.fleshed.asset.copy.search.barcode',
82 method => 'fleshed_copy_by_barcode',
87 #XXX Fix stored proc calls
88 sub ranged_asset_stat_cat {
93 return undef unless ($ou);
94 my $s_table = asset::stat_cat->table;
96 my $select = <<" SQL";
99 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
104 $fleshed = 1 if ($self->api_name =~ /fleshed/o);
106 my $sth = asset::stat_cat->db_Main->prepare_cached($select);
109 for my $sc ( map { asset::stat_cat->construct($_) } $sth->fetchall_hash ) {
110 my $sc_fm = $sc->to_fieldmapper;
112 [ $self->method_lookup( 'open-ils.storage.ranged.asset.stat_cat_entry.search.stat_cat' )->run($ou,$sc->id) ]
114 $client->respond( $sc_fm );
119 __PACKAGE__->register_method(
120 api_name => 'open-ils.storage.ranged.fleshed.asset.stat_cat.all',
123 method => 'ranged_asset_stat_cat',
126 __PACKAGE__->register_method(
127 api_name => 'open-ils.storage.ranged.asset.stat_cat.all',
130 method => 'ranged_asset_stat_cat',
134 #XXX Fix stored proc calls
135 sub multiranged_asset_stat_cat {
140 return undef unless (defined($ous) and @$ous);
141 my $s_table = asset::stat_cat->table;
143 my $select = <<" SQL";
146 WHERE s.owner IN ( XXX )
150 my $binds = join(' INTERSECT ', map { 'SELECT id FROM actor.org_unit_full_path(?)' } grep {defined} @$ous);
151 $select =~ s/XXX/$binds/so;
154 $fleshed = 1 if ($self->api_name =~ /fleshed/o);
156 my $sth = asset::stat_cat->db_Main->prepare_cached($select);
157 $sth->execute(map { "$_" } grep {defined} @$ous);
159 for my $sc ( map { asset::stat_cat->construct($_) } $sth->fetchall_hash ) {
160 my $sc_fm = $sc->to_fieldmapper;
162 [ $self->method_lookup( 'open-ils.storage.multiranged.asset.stat_cat_entry.search.stat_cat' )->run($ous, $sc->id) ]
164 $client->respond( $sc_fm );
169 __PACKAGE__->register_method(
170 api_name => 'open-ils.storage.multiranged.fleshed.asset.stat_cat.all',
173 method => 'multiranged_asset_stat_cat',
176 #XXX Fix stored proc calls
177 sub ranged_asset_stat_cat_entry {
183 return undef unless ($ou);
184 my $s_table = asset::stat_cat_entry->table;
186 my $select = <<" SQL";
189 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
194 my $sth = asset::stat_cat->db_Main->prepare_cached($select);
195 $sth->execute($ou,$sc);
197 for my $sce ( map { asset::stat_cat_entry->construct($_) } $sth->fetchall_hash ) {
198 $client->respond( $sce->to_fieldmapper );
203 __PACKAGE__->register_method(
204 api_name => 'open-ils.storage.ranged.asset.stat_cat_entry.search.stat_cat',
207 method => 'ranged_asset_stat_cat_entry',
210 #XXX Fix stored proc calls
211 sub multiranged_asset_stat_cat_entry {
217 return undef unless (defined($ous) and @$ous);
218 my $s_table = asset::stat_cat_entry->table;
220 my $select = <<" SQL";
223 WHERE s.owner IN ( XXX ) and s.stat_cat = ?
227 my $binds = join(' INTERSECT ', map { 'SELECT id FROM actor.org_unit_full_path(?)' } grep {defined} @$ous);
228 $select =~ s/XXX/$binds/so;
230 my $sth = asset::stat_cat->db_Main->prepare_cached($select);
231 $sth->execute(map {"$_"} @$ous,$sc);
233 for my $sce ( map { asset::stat_cat_entry->construct($_) } $sth->fetchall_hash ) {
234 $client->respond( $sce->to_fieldmapper );
239 __PACKAGE__->register_method(
240 api_name => 'open-ils.storage.multiranged.asset.stat_cat_entry.search.stat_cat',
243 method => 'multiranged_asset_stat_cat_entry',