diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Dashboard.pm | 35 | ||||
-rw-r--r-- | perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm | 35 |
2 files changed, 35 insertions, 35 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Dashboard.pm b/perllib/FixMyStreet/App/Controller/Dashboard.pm index de55e0768..7cdf150aa 100644 --- a/perllib/FixMyStreet/App/Controller/Dashboard.pm +++ b/perllib/FixMyStreet/App/Controller/Dashboard.pm @@ -103,7 +103,10 @@ sub index : Path : Args(0) { $c->stash->{bodies} = \@bodies; } - $c->stash->{start_date} = $c->get_param('start_date'); + my $days30 = DateTime->now(time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone)->subtract(days => 30); + $days30->truncate( to => 'day' ); + + $c->stash->{start_date} = $c->get_param('start_date') || $days30->strftime('%Y-%m-%d'); $c->stash->{end_date} = $c->get_param('end_date'); $c->stash->{q_state} = $c->get_param('state') || ''; @@ -136,30 +139,14 @@ sub construct_rs_filter : Private { } my $dtf = $c->model('DB')->storage->datetime_parser; - my $date = DateTime->now( time_zone => FixMyStreet->local_time_zone )->subtract(days => 30); - $date->truncate( to => 'day' ); - - $where{'me.confirmed'} = { '>=', $dtf->format_datetime($date) }; - - my $start_date = $c->stash->{start_date}; - my $end_date = $c->stash->{end_date}; - if ($start_date or $end_date) { - my @parts; - if ($start_date) { - my $date = $dtf->parse_datetime($start_date); - push @parts, { '>=', $dtf->format_datetime( $date ) }; - } - if ($end_date) { - my $one_day = DateTime::Duration->new( days => 1 ); - my $date = $dtf->parse_datetime($end_date); - push @parts, { '<', $dtf->format_datetime( $date + $one_day ) }; - } - if (scalar @parts == 2) { - $where{'me.confirmed'} = [ -and => $parts[0], $parts[1] ]; - } else { - $where{'me.confirmed'} = $parts[0]; - } + my $start_date = $dtf->parse_datetime($c->stash->{start_date}); + $where{'me.confirmed'} = { '>=', $dtf->format_datetime($start_date) }; + + if (my $end_date = $c->stash->{end_date}) { + my $one_day = DateTime::Duration->new( days => 1 ); + $end_date = $dtf->parse_datetime($end_date) + $one_day; + $where{'me.confirmed'} = [ -and => $where{'me.confirmed'}, { '<', $dtf->format_datetime($end_date) } ]; } $c->stash->{params} = \%where; diff --git a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm index 5d1d45379..31876d83d 100644 --- a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm +++ b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm @@ -14,10 +14,6 @@ use FixMyStreet::Email; my $opts = { commit => 0, - body => '2237', - cobrand => 'oxfordshire', - closure_cutoff => "2015-01-01 00:00:00", - email_cutoff => "2016-01-01 00:00:00", }; sub query { @@ -84,11 +80,7 @@ sub archive { }); printf("Closing %d old reports, without sending emails: ", $problems_to_close->count); - - if ( $opts->{commit} ) { - $problems_to_close->update({ state => 'closed', send_questionnaire => 0 }); - } - + close_problems($problems_to_close); printf("done.\n") } @@ -132,10 +124,31 @@ sub send_email_and_close { unless ( $email_error ) { printf("done.\n Closing reports: "); - - $problems->update({ state => 'closed', send_questionnaire => 0 }); + close_problems($problems); printf("done.\n"); } else { printf("error! Not closing reports for this user.\n") } } + +sub close_problems { + return unless $opts->{commit}; + + my $problems = shift; + while (my $problem = $problems->next) { + my $timestamp = \'current_timestamp'; + $problem->add_to_comments( { + text => '', + created => $timestamp, + confirmed => $timestamp, + user_id => $opts->{user}, + name => _('an administrator'), + mark_fixed => 0, + anonymous => 0, + state => 'confirmed', + problem_state => 'closed', + extra => { is_superuser => 1 }, + } ); + $problem->update({ state => 'closed', send_questionnaire => 0 }); + } +} |