3 require "/openils/bin/oils_header.pl";
7 use OpenSRF::Utils qw/cleanse_ISO8601/;
8 use OpenSRF::Utils::Logger qw/$logger/;
9 use OpenSRF::Utils::SettingsClient;
17 my ($stringy_ts) = @_;
18 return (new DateTime::Format::ISO8601)->parse_datetime(
19 cleanse_ISO8601($stringy_ts)
23 sub get_closed_dates {
25 my $editor = new OpenILS::Utils::CStoreEditor;
27 my $rows = $editor->json_query({
28 "select" => {"aoucd" => ["close_start", "close_end"]},
30 "where" => {"org_unit" => $ou},
31 "order_by" => [{class => "aoucd", field => "close_start", direction => "desc"}]
35 $logger->error("get_closed_dates json_query failed for ou $ou !");
36 my $textcode = $editor->die_event->{textcode};
37 $logger->error("get_closed_dates json_query die_event: $textcode");
46 unixify($_->{"close_start"}), unixify($_->{"close_end"})
54 #############################################################################
58 getopts('c:o:u:', $opts);
62 if (!($ou = int($opts->{o}))) {
63 die("no ou specified.\n$0 -o 123 # where 123 is org unit id");
66 osrf_connect($opts->{c} || $ENV{SRF_CORE} || "/openils/conf/opensrf_core.xml");
68 if (!($url = $opts->{u})) {
69 my $settings = OpenSRF::Utils::SettingsClient->new;
70 my $mediator_host = $settings->config_value(notifications => telephony => "host");
71 my $mediator_port = $settings->config_value(notifications => telephony => "port");
73 $url = "http://$mediator_host:$mediator_port/";
76 my $closed_dates = get_closed_dates($ou);
77 my $rpc_client = new RPC::XML::Client($url);
78 my $result = $rpc_client->simple_request("set_holidays", $closed_dates);
83 } elsif ($result != @$closed_dates) {
88 "after set_holidays() for " . scalar(@$closed_dates) .
89 " dates, mediator returned $result"