aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/My.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/My.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/My.pm29
1 files changed, 22 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/My.pm b/perllib/FixMyStreet/App/Controller/My.pm
index 3328caac0..52a3a8cef 100644
--- a/perllib/FixMyStreet/App/Controller/My.pm
+++ b/perllib/FixMyStreet/App/Controller/My.pm
@@ -135,13 +135,14 @@ sub get_problems : Private {
my $problems = [];
my $states = $c->stash->{filter_problem_states};
+ my $table = $c->action eq 'my/planned' ? 'report' : 'me';
my $params = {
- state => [ keys %$states ],
+ "$table.state" => [ keys %$states ],
};
my $categories = [ $c->get_param_list('filter_category', 1) ];
if ( @$categories ) {
- $params->{category} = $categories;
+ $params->{"$table.category"} = $categories;
$c->stash->{filter_category} = { map { $_ => 1 } @$categories };
}
@@ -149,13 +150,14 @@ sub get_problems : Private {
$rows = 5000 if $c->stash->{sort_key} eq 'shortlist'; # Want all reports
my $rs = $c->stash->{problems_rs}->search( $params, {
+ prefetch => 'contact',
order_by => $c->stash->{sort_order},
rows => $rows,
} )->include_comment_counts->page( $p_page );
while ( my $problem = $rs->next ) {
$c->stash->{has_content}++;
- push @$pins, $problem->pin_data($c, 'my', private => 1);
+ push @$pins, $problem->pin_data('my', private => 1);
push @$problems, $problem;
}
@@ -186,15 +188,28 @@ sub get_updates : Private {
sub setup_page_data : Private {
my ($self, $c) = @_;
+ my $table = $c->action eq 'my/planned' ? 'report' : 'me';
my @categories = $c->stash->{problems_rs}->search({
- state => [ FixMyStreet::DB::Result::Problem->visible_states() ],
+ "$table.state" => [ FixMyStreet::DB::Result::Problem->visible_states() ],
}, {
- columns => [ 'category', 'bodies_str', 'extra' ],
+ join => 'contact',
+ columns => [ "$table.category", 'contact.extra', 'contact.category' ],
distinct => 1,
- order_by => [ 'category' ],
+ order_by => [ "$table.category" ],
} )->all;
+ # Ensure only uniquely named categories are shown
+ my %seen;
+ @categories = grep { !$seen{$_->category_display}++ } @categories;
$c->stash->{filter_categories} = \@categories;
- $c->forward('/report/stash_category_groups', [ \@categories ]) if $c->cobrand->enable_category_groups;
+
+ if ($c->cobrand->enable_category_groups) {
+ my @contacts = map { {
+ category => $_->category,
+ category_display => $_->category_display,
+ group => [''],
+ } } @categories;
+ $c->forward('/report/stash_category_groups', [ \@contacts ]);
+ }
my $pins = $c->stash->{pins};
FixMyStreet::Map::display_map(