diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-03-01 13:52:44 +0000 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2019-03-04 12:54:47 +0000 |
commit | f79e03c914d28c0c3bb2a05b7e38ddfdf1fce54f (patch) | |
tree | 0171116a67039fbe835973a1b569884f4178b6eb /perllib/FixMyStreet/Cobrand/Bromley.pm | |
parent | 86827c23436fef52b6b38d3fbc357fb0bf20f0c6 (diff) |
Add DateRange class.
This simplifies the places where a date range is used;
it also makes Dashboard date parsing more flexible.
Diffstat (limited to 'perllib/FixMyStreet/Cobrand/Bromley.pm')
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Bromley.pm | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Bromley.pm b/perllib/FixMyStreet/Cobrand/Bromley.pm index 6def2b2b1..553d716c5 100644 --- a/perllib/FixMyStreet/Cobrand/Bromley.pm +++ b/perllib/FixMyStreet/Cobrand/Bromley.pm @@ -7,6 +7,7 @@ use utf8; use DateTime::Format::W3CDTF; use DateTime::Format::Flexible; use Try::Tiny; +use FixMyStreet::DateRange; sub council_area_id { return 2482; } sub council_area { return 'Bromley'; } @@ -387,27 +388,17 @@ sub munge_load_and_group_problems { } # Date range - my $dtf = $c->model('DB')->storage->datetime_parser; - my $dtp = DateTime::Format::Flexible->new; my $start_default = DateTime->today(time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone)->subtract(months => 3); $c->stash->{start_date} = $c->get_param('start_date') || $start_default->strftime('%Y-%m-%d'); $c->stash->{end_date} = $c->get_param('end_date'); - my $start_date = try { - $dtp->parse_datetime($c->stash->{start_date}, european => 1); - } catch { - $start_default; - }; - $where->{'me.confirmed'} = { '>=', $dtf->format_datetime($start_date) }; - - my $end_date = try { - $dtp->parse_datetime($c->stash->{end_date}, european => 1); - }; - if ($end_date) { - my $one_day = DateTime::Duration->new( days => 1 ); - $end_date += $one_day; - $where->{'me.confirmed'} = [ -and => $where->{'me.confirmed'}, { '<', $dtf->format_datetime($end_date) } ]; - } + my $range = FixMyStreet::DateRange->new( + start_date => $c->stash->{start_date}, + start_default => $start_default, + end_date => $c->stash->{end_date}, + formatter => $c->model('DB')->storage->datetime_parser, + ); + $where->{'me.confirmed'} = $range->sql; delete $filter->{rows}; |