]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/OpenILS/Application/Trigger/Validator.pm
added CircIsOverdue validator
[working/Evergreen.git] / Open-ILS / src / perlmods / OpenILS / Application / Trigger / Validator.pm
1 package OpenILS::Application::Trigger::Validator;
2 use DateTime;
3 use DateTime::Format::ISO8601;
4 sub fourty_two { return 42 }
5 sub NOOP_True { return 1 }
6 sub NOOP_False { return 0 }
7
8 sub CircIsOpen {
9     my $self = shift;
10     my $env = shift;
11
12     return defined($env->{target}->checkin_time) ? 0 : 1;
13 }
14
15 sub CircIsOverdue {
16     my $self;
17     my $env;
18     my $circ = $env->{target};
19     return 0 if $circ->checkin_time;
20     return 0 if $circ->stop_fines and not $circ->stop_fines =~ /MAXFINES|LONGOVERDUE/;
21     return 0 if DateTime::Format::ISO8601->new->parse_datetime($circ->due_date) < DateTime->now;
22     return 1;
23 }
24
25 sub HoldIsAvailable {
26     my $self = shift;
27     my $env = shift;
28
29     my $t = $env->{target}->transit;
30
31     die "Transit object exists, but is not fleshed.  Add 'transit' to the environment in order to use this Validator."
32         if ($t && !ref($t));
33
34     if ($t) {
35         return (defined($env->{target}->capture_time) && defined($t->dest_recv_time)) ? 1 : 0;
36     }
37
38     return defined($env->{target}->capture_time) ? 1 : 0;
39 }
40
41 1;