diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Bexley.pm | 27 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Contact.pm | 10 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/ResultSet/Contact.pm | 9 |
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; |