diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Reports.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Reports.pm | 79 |
1 files changed, 39 insertions, 40 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Reports.pm b/perllib/FixMyStreet/App/Controller/Reports.pm index 97976ebe3..e65810b91 100644 --- a/perllib/FixMyStreet/App/Controller/Reports.pm +++ b/perllib/FixMyStreet/App/Controller/Reports.pm @@ -154,6 +154,8 @@ sub ward : Path : Args(2) { $c->forward('stash_report_sort', [ $c->cobrand->reports_ordering ]); $c->forward( 'load_and_group_problems' ); + $c->forward('setup_categories'); + if ($c->get_param('ajax')) { my $ajax_template = $c->stash->{ajax_template} || 'reports/_problem-list.html'; $c->detach('ajax', [ $ajax_template ]); @@ -165,7 +167,7 @@ sub ward : Path : Args(2) { $c->stash->{stats} = $c->cobrand->get_report_stats(); - $c->forward('setup_categories_and_map'); + $c->forward('setup_map'); # List of wards if ( !$c->stash->{wards} && $c->stash->{body}->id && $c->stash->{body}->body_areas->first ) { @@ -181,7 +183,7 @@ sub ward : Path : Args(2) { } } -sub setup_categories_and_map :Private { +sub setup_categories :Private { my ($self, $c) = @_; my @categories = $c->stash->{body}->contacts->not_deleted->search( undef, { @@ -191,9 +193,15 @@ sub setup_categories_and_map :Private { $c->cobrand->call_hook('munge_reports_category_list', \@categories); + $c->forward('/report/assigned_users_only', [ \@categories ]); + $c->stash->{filter_categories} = \@categories; $c->stash->{filter_category} = { map { $_ => 1 } $c->get_param_list('filter_category', 1) }; $c->forward('/report/stash_category_groups', [ \@categories ]) if $c->cobrand->enable_category_groups; +} + +sub setup_map :Private { + my ($self, $c) = @_; my $pins = $c->stash->{pins} || []; @@ -473,10 +481,10 @@ sub summary : Private { $c->forward('/admin/fetch_contacts'); $c->stash->{contacts} = [ $c->stash->{contacts}->all ]; - $c->forward('/dashboard/construct_rs_filter', []); + my $reporting = $c->forward('/dashboard/construct_rs_filter', []); if ( $c->get_param('csv') ) { - $c->detach('export_summary_csv'); + $c->detach('export_summary_csv', [ $reporting ]); } $c->forward('/dashboard/generate_grouped_data'); @@ -486,38 +494,26 @@ sub summary : Private { } sub export_summary_csv : Private { - my ( $self, $c ) = @_; + my ( $self, $c, $reporting ) = @_; - $c->stash->{csv} = { - objects => $c->stash->{objects_rs}->search_rs({}, { - rows => 100, - order_by => { '-desc' => 'me.confirmed' }, - }), - headers => [ - 'Report ID', - 'Title', - 'Category', - 'Created', - 'Confirmed', - 'Status', - 'Latitude', 'Longitude', - 'Query', - 'Report URL', - ], - columns => [ - 'id', - 'title', - 'category', - 'created', - 'confirmed', - 'state', - 'latitude', 'longitude', - 'postcode', - 'url', - ], - filename => 'fixmystreet-data', - }; - $c->forward('/dashboard/generate_csv'); + $reporting->objects_attrs({ + rows => 100, + order_by => { '-desc' => 'me.confirmed' }, + }); + $reporting->add_csv_columns( + id => 'Report ID', + title => 'Title', + category => 'Category', + created => 'Created', + confirmed => 'Confirmed', + state => 'Status', + latitude => 'Latitude', + longitude => 'Longitude', + postcode => 'Query', + url => 'Report URL', + ); + $reporting->filename('fixmystreet-data'); + $reporting->generate_csv_http($c); } =head2 check_canonical_url @@ -620,6 +616,9 @@ sub load_problems_parameters : Private { }; if ($c->user_exists && $body) { my $prefetch = []; + if ($c->user->from_body || $c->user->is_superuser) { + push @$prefetch, 'contact'; + } if ($c->user->has_permission_to('planned_reports', $body->id)) { push @$prefetch, 'user_planned_reports'; } @@ -646,7 +645,7 @@ sub load_problems_parameters : Private { } if (@$category) { - $where->{category} = $category; + $where->{'me.category'} = $category; } if ($c->stash->{wards}) { @@ -687,12 +686,12 @@ sub check_non_public_reports_permission : Private { } if ( $user_has_permission ) { - $where->{non_public} = 1 if $c->stash->{only_non_public}; + $where->{'me.non_public'} = 1 if $c->stash->{only_non_public}; } else { - $where->{non_public} = 0; + $where->{'me.non_public'} = 0; } } else { - $where->{non_public} = 0; + $where->{'me.non_public'} = 0; } } @@ -815,7 +814,7 @@ sub stash_report_sort : Private { sub add_row { my ( $c, $problem, $body, $problems, $pins ) = @_; push @{$problems->{$body}}, $problem; - push @$pins, $problem->pin_data($c, 'reports'); + push @$pins, $problem->pin_data('reports'); } sub ajax : Private { |