diff options
author | Marius Halden <marius.h@lden.org> | 2019-10-30 19:28:55 +0100 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2019-10-30 19:28:55 +0100 |
commit | 377bd96aab7cad3434185c30eb908c9da447fe40 (patch) | |
tree | 7ec5527e205d5b62caaa862a7de8cd25199c8bf0 /perllib/FixMyStreet/App/Controller/JSON.pm | |
parent | 56f61b1441070aa0b9ddcfc74aca46c20313609f (diff) | |
parent | 92b253904062edd533e55c22824de6fd01e2f7c1 (diff) |
Merge tag 'v2.6' into fiksgatami-dev
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/JSON.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/JSON.pm | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/perllib/FixMyStreet/App/Controller/JSON.pm b/perllib/FixMyStreet/App/Controller/JSON.pm index 762e3c115..ccc5b31dc 100644 --- a/perllib/FixMyStreet/App/Controller/JSON.pm +++ b/perllib/FixMyStreet/App/Controller/JSON.pm @@ -8,6 +8,7 @@ use JSON::MaybeXS; use DateTime; use DateTime::Format::ISO8601; use List::MoreUtils 'uniq'; +use FixMyStreet::DateRange; =head1 NAME @@ -50,16 +51,19 @@ sub problems : Local { } # convert the dates to datetimes and trap errors - my $iso8601 = DateTime::Format::ISO8601->new; - my $start_dt = eval { $iso8601->parse_datetime($start_date); }; - my $end_dt = eval { $iso8601->parse_datetime($end_date); }; - unless ( $start_dt && $end_dt ) { + my $range = FixMyStreet::DateRange->new( + start_date => $start_date, + end_date => $end_date, + parser => DateTime::Format::ISO8601->new, + formatter => $c->model('DB')->schema->storage->datetime_parser, + ); + unless ($range->start && $range->end) { $c->stash->{error} = 'Invalid dates supplied'; return; } # check that the dates are sane - if ( $start_dt > $end_dt ) { + if ($range->start >= $range->end) { $c->stash->{error} = 'Start date after end date'; return; } @@ -80,15 +84,10 @@ sub problems : Local { $date_col = 'lastupdate'; } - my $dt_parser = $c->model('DB')->schema->storage->datetime_parser; - - my $one_day = DateTime::Duration->new( days => 1 ); my $query = { - $date_col => { - '>=' => $dt_parser->format_datetime($start_dt), - '<=' => $dt_parser->format_datetime($end_dt + $one_day), - }, + $date_col => $range->sql, state => [ @state ], + non_public => 0, }; $query->{category} = $category if $category; my @problems = $c->cobrand->problems->search( $query, { |