aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/Controller/Dashboard.pm35
-rw-r--r--perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm35
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 });
+ }
+}