diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 95969016f..9d6c7d922 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -13,6 +13,7 @@ use List::Util 'first'; use List::MoreUtils 'uniq'; use mySociety::ArrayUtils; use Text::CSV; +use Try::Tiny; use FixMyStreet::SendReport; use FixMyStreet::SMS; @@ -142,43 +143,47 @@ sub timeline : Path( 'timeline' ) : Args(0) { my %time; - $c->model('DB')->schema->storage->sql_maker->quote_char( '"' ); - $c->model('DB')->schema->storage->sql_maker->name_sep( '.' ); + try { + $c->model('DB')->schema->storage->sql_maker->quote_char( '"' ); + $c->model('DB')->schema->storage->sql_maker->name_sep( '.' ); - my $probs = $c->cobrand->problems->timeline; + my $probs = $c->cobrand->problems->timeline; - foreach ($probs->all) { - push @{$time{$_->created->epoch}}, { type => 'problemCreated', date => $_->created, obj => $_ }; - push @{$time{$_->confirmed->epoch}}, { type => 'problemConfirmed', date => $_->confirmed, obj => $_ } if $_->confirmed; - push @{$time{$_->whensent->epoch}}, { type => 'problemSent', date => $_->whensent, obj => $_ } if $_->whensent; - } - - my $questionnaires = $c->model('DB::Questionnaire')->timeline( $c->cobrand->restriction ); + foreach ($probs->all) { + push @{$time{$_->created->epoch}}, { type => 'problemCreated', date => $_->created, obj => $_ }; + push @{$time{$_->confirmed->epoch}}, { type => 'problemConfirmed', date => $_->confirmed, obj => $_ } if $_->confirmed; + push @{$time{$_->whensent->epoch}}, { type => 'problemSent', date => $_->whensent, obj => $_ } if $_->whensent; + } - foreach ($questionnaires->all) { - push @{$time{$_->whensent->epoch}}, { type => 'quesSent', date => $_->whensent, obj => $_ }; - push @{$time{$_->whenanswered->epoch}}, { type => 'quesAnswered', date => $_->whenanswered, obj => $_ } if $_->whenanswered; - } + my $questionnaires = $c->model('DB::Questionnaire')->timeline( $c->cobrand->restriction ); - my $updates = $c->cobrand->updates->timeline; + foreach ($questionnaires->all) { + push @{$time{$_->whensent->epoch}}, { type => 'quesSent', date => $_->whensent, obj => $_ }; + push @{$time{$_->whenanswered->epoch}}, { type => 'quesAnswered', date => $_->whenanswered, obj => $_ } if $_->whenanswered; + } - foreach ($updates->all) { - push @{$time{$_->created->epoch}}, { type => 'update', date => $_->created, obj => $_} ; - } + my $updates = $c->cobrand->updates->timeline; - my $alerts = $c->model('DB::Alert')->timeline_created( $c->cobrand->restriction ); + foreach ($updates->all) { + push @{$time{$_->created->epoch}}, { type => 'update', date => $_->created, obj => $_} ; + } - foreach ($alerts->all) { - push @{$time{$_->whensubscribed->epoch}}, { type => 'alertSub', date => $_->whensubscribed, obj => $_ }; - } + my $alerts = $c->model('DB::Alert')->timeline_created( $c->cobrand->restriction ); - $alerts = $c->model('DB::Alert')->timeline_disabled( $c->cobrand->restriction ); + foreach ($alerts->all) { + push @{$time{$_->whensubscribed->epoch}}, { type => 'alertSub', date => $_->whensubscribed, obj => $_ }; + } - foreach ($alerts->all) { - push @{$time{$_->whendisabled->epoch}}, { type => 'alertDel', date => $_->whendisabled, obj => $_ }; - } + $alerts = $c->model('DB::Alert')->timeline_disabled( $c->cobrand->restriction ); - $c->model('DB')->schema->storage->sql_maker->quote_char( '' ); + foreach ($alerts->all) { + push @{$time{$_->whendisabled->epoch}}, { type => 'alertDel', date => $_->whendisabled, obj => $_ }; + } + } catch { + die $_; + } finally { + $c->model('DB')->schema->storage->sql_maker->quote_char( '' ); + }; $c->stash->{time} = \%time; |