aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/Cobrand/TfL.pm70
1 files changed, 70 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Cobrand/TfL.pm b/perllib/FixMyStreet/Cobrand/TfL.pm
index 846e1e776..6afa4b363 100644
--- a/perllib/FixMyStreet/Cobrand/TfL.pm
+++ b/perllib/FixMyStreet/Cobrand/TfL.pm
@@ -127,6 +127,76 @@ sub available_permissions {
return $perms;
}
+sub dashboard_export_problems_add_columns {
+ my $self = shift;
+ my $c = $self->{c};
+
+ my %groups;
+ if ($c->stash->{body}) {
+ %groups = FixMyStreet::DB->resultset('Contact')->active->search({
+ body_id => $c->stash->{body}->id,
+ })->group_lookup;
+ }
+
+ splice @{$c->stash->{csv}->{headers}}, 5, 0, 'Subcategory';
+ splice @{$c->stash->{csv}->{columns}}, 5, 0, 'subcategory';
+
+ $c->stash->{csv}->{headers} = [
+ map { $_ eq 'Ward' ? 'Borough' : $_ } @{ $c->stash->{csv}->{headers} },
+ "Agent responsible",
+ "Safety critical",
+ "Delivered to",
+ "Closure email at",
+ "Reassigned at",
+ "Reassigned by",
+ ];
+
+ $c->stash->{csv}->{columns} = [
+ @{ $c->stash->{csv}->{columns} },
+ "agent_responsible",
+ "safety_critical",
+ "delivered_to",
+ "closure_email_at",
+ "reassigned_at",
+ "reassigned_by",
+ ];
+
+ $c->stash->{csv}->{extra_data} = sub {
+ my $report = shift;
+
+ my $agent = $report->shortlisted_user;
+
+ my $change = $report->admin_log_entries->search(
+ { action => 'category_change' },
+ { prefetch => 'user', rows => 1, order_by => { -desc => 'me.id' } }
+ )->single;
+ my $reassigned_at = $change ? $change->whenedited : '';
+ my $reassigned_by = $change ? $change->user->name : '';
+
+ my $user_name_display = $report->anonymous
+ ? '(anonymous ' . $report->id . ')' : $report->name;
+
+ my $safety_critical = $report->get_extra_field_value('safety_critical') || 'no';
+ my $delivered_to = $report->get_extra_metadata('sent_to') || [];
+ my $closure_email_at = $report->get_extra_metadata('closure_alert_sent_at') || '';
+ $closure_email_at = DateTime->from_epoch(
+ epoch => $closure_email_at, time_zone => FixMyStreet->local_time_zone
+ ) if $closure_email_at;
+ return {
+ acknowledged => $report->whensent,
+ agent_responsible => $agent ? $agent->name : '',
+ category => $groups{$report->category},
+ subcategory => $report->category,
+ user_name_display => $user_name_display,
+ safety_critical => $safety_critical,
+ delivered_to => join(',', @$delivered_to),
+ closure_email_at => $closure_email_at,
+ reassigned_at => $reassigned_at,
+ reassigned_by => $reassigned_by,
+ };
+ };
+}
+
sub must_have_2fa {
my ($self, $user) = @_;