1 package OpenILS::Application::Actor::ClosedDates;
2 use base 'OpenILS::Application';
3 use strict; use warnings;
4 use OpenSRF::EX qw(:try);
5 use OpenILS::Utils::CStoreEditor q/:funcs/;
7 sub initialize { return 1; }
9 __PACKAGE__->register_method(
10 method => 'fetch_dates',
11 api_name => 'open-ils.actor.org_unit.closed.retrieve.all',
13 Retrieves a list of closed date object IDs
18 my( $self, $conn, $auth, $args ) = @_;
20 my $e = new_editor(authtoken=>$auth);
21 return $e->event unless $e->checkauth;
23 my $org = $$args{orgid} || $e->requestor->ws_ou;
25 my $start = $$args{start_date} || #default to today
26 ($date[5] + 1900) .'-'. ($date[4] + 1) .'-'. $date[3];
27 my $end = $$args{end_date} || '3000-01-01'; # Y3K, here I come..
29 my $dates = $e->search_actor_org_unit_closed_date(
31 close_start => { ">=" => $start },
32 close_end => { "<=" => $end },
34 }, { idlist => $$args{idlist} } ) or return $e->event;
36 if(!$$args{idlist} and @$dates) {
37 $dates = [ sort { $a->close_start cmp $b->close_start } @$dates ];
43 __PACKAGE__->register_method(
44 method => 'fetch_date',
45 api_name => 'open-ils.actor.org_unit.closed.retrieve',
47 Retrieves a single date object
52 my( $self, $conn, $auth, $id ) = @_;
53 my $e = new_editor(authtoken=>$auth);
54 return $e->event unless $e->checkauth;
55 my $date = $e->retrieve_actor_org_unit_closed_date($id) or return $e->event;
60 __PACKAGE__->register_method(
61 method => 'delete_date',
62 api_name => 'open-ils.actor.org_unit.closed.delete',
64 Removes a single date object
69 my( $self, $conn, $auth, $id ) = @_;
70 my $e = new_editor(authtoken=>$auth, xact => 1);
71 return $e->die_event unless $e->checkauth;
72 my $date = $e->retrieve_actor_org_unit_closed_date($id) or return $e->die_event;
73 return $e->die_event unless $e->allowed(
74 'actor.org_unit.closed_date.delete', $date->org_unit);
75 $e->delete_actor_org_unit_closed_date($date) or return $e->die_event;
83 __PACKAGE__->register_method(
84 method => 'create_date',
85 api_name => 'open-ils.actor.org_unit.closed.create',
87 Creates a new org closed data
92 my( $self, $conn, $auth, $date ) = @_;
94 my $e = new_editor(authtoken=>$auth, xact =>1);
95 return $e->die_event unless $e->checkauth;
97 return $e->die_event unless $e->allowed(
98 'actor.org_unit.closed_date.create', $date->org_unit);
100 $e->create_actor_org_unit_closed_date($date) or return $e->die_event;
102 my $newobj = $e->retrieve_actor_org_unit_closed_date($date->id)
103 or return $e->die_event;
110 __PACKAGE__->register_method(
111 method => 'edit_date',
112 api_name => 'open-ils.actor.org_unit.closed.update',
114 Updates a closed date object
119 my( $self, $conn, $auth, $date ) = @_;
120 my $e = new_editor(authtoken=>$auth, xact =>1);
121 return $e->die_event unless $e->checkauth;
123 # First make sure they have the right to update the selected date object
124 my $odate = $e->retrieve_actor_org_unit_closed_date($date->id)
125 or return $e->die_event;
127 return $e->die_event unless $e->allowed(
128 'actor.org_unit.closed_date.update', $odate->org_unit);
130 $e->update_actor_org_unit_closed_date($date) or return $e->die_event;
137 __PACKAGE__->register_method(
138 method => 'closed_dates_overlap',
139 api_name => 'open-ils.actor.org_unit.closed_date.overlap',
141 Returns an object with 'start' and 'end' fields
142 start is the first day the org is open going backwards from
143 'date'. end is the next day the org is open going
145 @param orgid The org unit in question
146 @param date The date to search
149 sub closed_dates_overlap {
150 my( $self, $conn, $auth, $orgid, $date ) = @_;
151 my $e = new_editor(authtoken=>$auth);
152 return $e->event unless $e->checkauth;
154 'open-ils.storage.actor.org_unit.closed_date.overlap', $orgid, $date );