aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Cobrand/BathNES.pm
diff options
context:
space:
mode:
authorDave Arter <davea@mysociety.org>2018-05-25 17:37:05 +0100
committerDave Arter <davea@mysociety.org>2018-05-31 09:39:01 +0100
commita865ccbfd22842ac6ad7de9e63b54be4996dee3f (patch)
tree66663b253075df6a87fb8bf4d7e6815d9b32c6b4 /perllib/FixMyStreet/Cobrand/BathNES.pm
parent04d12e431bf89d5fd05d4f53335e70ab9d8082d4 (diff)
[BANES] Add extra columns to dashboard CSV export; behind new permission
Diffstat (limited to 'perllib/FixMyStreet/Cobrand/BathNES.pm')
-rw-r--r--perllib/FixMyStreet/Cobrand/BathNES.pm47
1 files changed, 47 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/Cobrand/BathNES.pm b/perllib/FixMyStreet/Cobrand/BathNES.pm
index bed27d703..81080bed9 100644
--- a/perllib/FixMyStreet/Cobrand/BathNES.pm
+++ b/perllib/FixMyStreet/Cobrand/BathNES.pm
@@ -147,6 +147,7 @@ sub available_permissions {
my $permissions = $self->SUPER::available_permissions();
$permissions->{Problems}->{report_reject} = "Reject reports";
+ $permissions->{Dashboard}->{export_extra_columns} = "Extra columns in CSV export";
return $permissions;
}
@@ -209,5 +210,51 @@ sub categories_restriction {
] } );
}
+sub dashboard_export_add_columns {
+ my $self = shift;
+ my $c = $self->{c};
+
+ return unless $c->user->has_body_permission_to('export_extra_columns');
+
+ $c->stash->{csv}->{headers} = [
+ @{ $c->stash->{csv}->{headers} },
+ "User Email",
+ "User Phone",
+ "Reported As",
+ "Staff User",
+ "Attribute Data",
+ "Site Used",
+ ];
+
+ $c->stash->{csv}->{columns} = [
+ @{ $c->stash->{csv}->{columns} },
+ "user_email",
+ "user_phone",
+ "reported_as",
+ "staff_user",
+ "attribute_data",
+ "site_used",
+ ];
+
+ $c->stash->{csv}->{extra_data} = sub {
+ my $report = shift;
+
+ my $reported_as = $report->get_extra_metadata('contributed_as') || '';
+ my $staff_user = '';
+ if ( my $contributed_by = $report->get_extra_metadata('contributed_by') ) {
+ $staff_user = $c->model('DB::User')->find({ id => $contributed_by })->email;
+ }
+ my $site_used = $report->service || $report->cobrand || '';
+ my $attribute_data = join "; ", map { $_->{name} . " = " . $_->{value} } @{ $report->get_extra_fields };
+ return {
+ user_email => $report->user->email || '',
+ user_phone => $report->user->phone || '',
+ reported_as => $reported_as,
+ staff_user => $staff_user,
+ attribute_data => $attribute_data,
+ site_used => $site_used,
+ };
+ };
+}
1;