]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/actor.pm
adding propper fieldmapper support for actor and biblio classes
[Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Storage / Publisher / actor.pm
1 package OpenILS::Application::Storage::Publisher::actor;
2 use base qw/OpenILS::Application::Storage/;
3 use OpenILS::Application::Storage::CDBI::actor;
4 use OpenSRF::Utils::Logger qw/:level/;
5 use OpenILS::Utils::Fieldmapper;
6
7 my $log = 'OpenSRF::Utils::Logger';
8
9 sub get_user_record {
10         my $self = shift;
11         my $client = shift;
12         my @ids = @_;
13
14         for my $id ( @ids ) {
15                 next unless ($id);
16                 
17                 $log->debug("Searching for $id using ".$self->api_name, DEBUG);
18
19                 my $rec;
20
21                 if ($self->api_name =~/username/o) {
22                         ($rec) = actor::user->search( usrname => "$id");
23                 } elsif ($self->api_name =~/userid/o) {
24                         ($rec) = actor::user->search( usrid => "$id");
25                 } else {
26                         $rec = actor::user->retrieve("$id");
27                 }
28
29                 if ($rec) {
30
31                         my $user = Fieldmapper::actor::user->new;
32
33                         for my $field (Fieldmapper::actor::user->real_fields) {
34                                 $user->$field($rec->$field);
35                         }
36
37                         $client->respond( $user );
38
39                 }
40
41                 last if ($self->api_name !~ /list$/o);
42         }
43         return undef;
44 }
45 __PACKAGE__->register_method(
46         method          => 'get_user_record',
47         api_name        => 'open-ils.storage.actor.user.retrieve',
48         api_level       => 1,
49         argc            => 1,
50 );
51 __PACKAGE__->register_method(
52         method          => 'get_user_record',
53         api_name        => 'open-ils.storage.actor.user.search.username',
54         api_level       => 1,
55         argc            => 1,
56 );
57 __PACKAGE__->register_method(
58         method          => 'get_user_record',
59         api_name        => 'open-ils.storage.actor.user.search.userid',
60         api_level       => 1,
61         argc            => 1,
62 );
63 __PACKAGE__->register_method(
64         method          => 'get_user_record',
65         api_name        => 'open-ils.storage.actor.user.retrieve.list',
66         api_level       => 1,
67         argc            => 1,
68 );
69 __PACKAGE__->register_method(
70         method          => 'get_user_record',
71         api_name        => 'open-ils.storage.actor.user.search.username.list',
72         api_level       => 1,
73         stream          => 1,
74         argc            => 1,
75 );
76 __PACKAGE__->register_method(
77         method          => 'get_user_record',
78         api_name        => 'open-ils.storage.actor.user.search.userid.list',
79         api_level       => 1,
80         stream          => 1,
81         argc            => 1,
82 );
83
84 sub update_user_record {
85         my $self = shift;
86         my $client = shift;
87         my $user = shift;
88
89         my $rec = actor::user->retrieve(''.$user->id);
90         return 0 unless ($rec);
91
92         $rec->autoupdate(0);
93
94         for my $field ( Fieldmapper::actor::user->real_fields ) {
95                 $rec->$field( $user->$field );
96         }
97
98         return 0 unless ($rec->is_changed);
99
100         $rec->update;
101
102         return 1;
103 }
104 __PACKAGE__->register_method(
105         method          => 'update_user_record',
106         api_name        => 'open-ils.storage.actor.user.update',
107         api_level       => 1,
108         argc            => 1,
109 );
110
111 sub delete_record_entry {
112         my $self = shift;
113         my $client = shift;
114         my $user = shift;
115
116         my $rec = actor::user->retrieve(''.$user->id);
117         return 0 unless ($rec);
118
119         $rec->delete;
120         return 1;
121 }
122 __PACKAGE__->register_method(
123         method          => 'delete_user_record',
124         api_name        => 'open-ils.storage.actor.user.delete',
125         api_level       => 1,
126         argc            => 1,
127 );
128
129 1;