aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/Bexley.pm27
-rw-r--r--perllib/FixMyStreet/DB/Result/Contact.pm10
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Contact.pm9
4 files changed, 47 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index 7822f5cf3..2246f6aea 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -1077,7 +1077,7 @@ sub set_report_extras : Private {
my ($self, $c, $contacts, $param_prefix) = @_;
$param_prefix ||= "";
- my @metalist = map { [ $_->get_metadata_for_input, $param_prefix ] } @$contacts;
+ my @metalist = map { [ $_->get_metadata_for_storage, $param_prefix ] } @$contacts;
push @metalist, map { [ $_->get_extra_fields, "extra[" . $_->id . "]" ] } @{$c->stash->{report_extra_fields}};
my @extra;
diff --git a/perllib/FixMyStreet/Cobrand/Bexley.pm b/perllib/FixMyStreet/Cobrand/Bexley.pm
index 1f16b817e..26470617a 100644
--- a/perllib/FixMyStreet/Cobrand/Bexley.pm
+++ b/perllib/FixMyStreet/Cobrand/Bexley.pm
@@ -131,4 +131,31 @@ sub open311_post_send {
$sender->send($row, $h);
}
+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}->{extra_data} = sub {
+ my $report = shift;
+
+ if ($groups{$report->category}) {
+ return {
+ category => $groups{$report->category},
+ subcategory => $report->category,
+ };
+ }
+ return {};
+ };
+}
+
1;
diff --git a/perllib/FixMyStreet/DB/Result/Contact.pm b/perllib/FixMyStreet/DB/Result/Contact.pm
index 17620f279..3ce0ec66f 100644
--- a/perllib/FixMyStreet/DB/Result/Contact.pm
+++ b/perllib/FixMyStreet/DB/Result/Contact.pm
@@ -121,6 +121,16 @@ sub get_metadata_for_input {
return \@metadata;
}
+sub get_metadata_for_storage {
+ my $self = shift;
+ my $metadata = $self->get_metadata_for_input;
+
+ # Also ignore any that were only for textual display
+ my @metadata = grep { ($_->{variable} || '') ne 'false' } @$metadata;
+
+ return \@metadata;
+}
+
sub id_field {
my $self = shift;
return $self->get_extra_metadata('id_field') || 'fixmystreet_id';
diff --git a/perllib/FixMyStreet/DB/ResultSet/Contact.pm b/perllib/FixMyStreet/DB/ResultSet/Contact.pm
index 8ef6d1ac5..7b3258262 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Contact.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Contact.pm
@@ -37,4 +37,13 @@ sub summary_count {
);
}
+sub group_lookup {
+ my $rs = shift;
+ map {
+ my $group = $_->get_extra_metadata('group') || '';
+ $group = join(',', ref $group ? @$group : $group);
+ $_->category => $group
+ } $rs->all;
+}
+
1;