1 package OpenILS::Application::Storage::Publisher::action;
2 use base qw/OpenILS::Application::Storage/;
3 #use OpenILS::Application::Storage::CDBI::action;
4 #use OpenSRF::Utils::Logger qw/:level/;
5 #use OpenILS::Utils::Fieldmapper;
7 #my $log = 'OpenSRF::Utils::Logger';
9 sub next_resp_group_id {
13 # XXX This is not replication safe!!!
15 my ($id) = action::survey->db_Main->selectrow_array(<<" SQL");
16 SELECT NEXTVAL('action.survey_response_group_id_seq'::TEXT)
20 __PACKAGE__->register_method(
21 api_name => 'open-ils.storage.action.survey_response.next_group_id',
23 method => 'next_resp_group_id',
26 sub patron_circ_summary {
31 return undef unless ($id);
32 my $c_table = action::circulation->table;
33 my $b_table = money::billing->table;
35 my $select = <<" SQL";
36 SELECT COUNT(DISTINCT c.id), SUM( COALESCE(b.amount,0) )
38 LEFT OUTER JOIN $b_table b ON (c.id = b.xact)
40 AND c.xact_finish IS NULL
41 AND c.stop_fines NOT IN ('CLAIMSRETURNED','LOST')
44 return action::survey->db_Main->selectrow_arrayref($select, {}, $id);
46 __PACKAGE__->register_method(
47 api_name => 'open-ils.storage.action.circulation.patron_summary',
49 method => 'patron_circ_summary',
52 #XXX Fix stored proc calls
53 sub find_local_surveys {
58 return undef unless ($ou);
59 my $s_table = action::survey->table;
61 my $select = <<" SQL";
64 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
65 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
68 my $sth = action::survey->db_Main->prepare_cached($select);
71 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
75 __PACKAGE__->register_method(
76 api_name => 'open-ils.storage.action.survey.all',
79 method => 'find_local_surveys',
82 #XXX Fix stored proc calls
83 sub find_opac_surveys {
88 return undef unless ($ou);
89 my $s_table = action::survey->table;
91 my $select = <<" SQL";
94 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
95 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
99 my $sth = action::survey->db_Main->prepare_cached($select);
102 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
106 __PACKAGE__->register_method(
107 api_name => 'open-ils.storage.action.survey.opac',
110 method => 'find_opac_surveys',
113 sub find_optional_surveys {
118 return undef unless ($ou);
119 my $s_table = action::survey->table;
121 my $select = <<" SQL";
124 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
125 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
126 AND s.required IS FALSE;
129 my $sth = action::survey->db_Main->prepare_cached($select);
132 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
136 __PACKAGE__->register_method(
137 api_name => 'open-ils.storage.action.survey.optional',
140 method => 'find_optional_surveys',
143 sub find_required_surveys {
148 return undef unless ($ou);
149 my $s_table = action::survey->table;
151 my $select = <<" SQL";
154 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
155 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
156 AND s.required IS TRUE;
159 my $sth = action::survey->db_Main->prepare_cached($select);
162 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
166 __PACKAGE__->register_method(
167 api_name => 'open-ils.storage.action.survey.required',
170 method => 'find_required_surveys',
173 sub find_usr_summary_surveys {
178 return undef unless ($ou);
179 my $s_table = action::survey->table;
181 my $select = <<" SQL";
184 JOIN actor.org_unit_full_path(?) p ON (p.id = s.owner)
185 WHERE CURRENT_DATE BETWEEN s.start_date AND s.end_date
186 AND s.usr_summary IS TRUE;
189 my $sth = action::survey->db_Main->prepare_cached($select);
192 $client->respond( $_->to_fieldmapper ) for ( map { action::survey->construct($_) } $sth->fetchall_hash );
196 __PACKAGE__->register_method(
197 api_name => 'open-ils.storage.action.survey.usr_summary',
200 method => 'find_usr_summary_surveys',