aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Reports.pm
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2021-10-07 13:32:40 +0200
committerMarius Halden <marius.h@lden.org>2021-10-07 13:32:40 +0200
commit09dacfc6b8bf62addeee16c20b1d90c2a256da96 (patch)
tree7caa2bf9e92227ab74448f9b746dd28bbcb81b2a /perllib/FixMyStreet/App/Controller/Reports.pm
parent585e57484f9c6332668bf1ac0a6a3b39dbe32223 (diff)
parentcea89fb87a96943708a1db0f646492fbfaaf000f (diff)
Merge tag 'v3.1' into fiksgatami-devfiksgatami-dev
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Reports.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Reports.pm79
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 {