aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/Cobrand/Zurich.pm25
1 files changed, 16 insertions, 9 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Zurich.pm b/perllib/FixMyStreet/Cobrand/Zurich.pm
index 4fd2def30..457bc1e75 100644
--- a/perllib/FixMyStreet/Cobrand/Zurich.pm
+++ b/perllib/FixMyStreet/Cobrand/Zurich.pm
@@ -1114,28 +1114,35 @@ sub admin_stats {
my $self = shift;
my $c = $self->{c};
- my %date_params;
+ my %optional_params;
my $ym = $c->get_param('ym');
my ($m, $y) = $ym ? ($ym =~ /^(\d+)\.(\d+)$/) : ();
$c->stash->{ym} = $ym;
if ($y && $m) {
$c->stash->{start_date} = DateTime->new( year => $y, month => $m, day => 1 );
$c->stash->{end_date} = $c->stash->{start_date} + DateTime::Duration->new( months => 1 );
- $date_params{created} = {
+ $optional_params{created} = {
'>=', DateTime::Format::Pg->format_datetime($c->stash->{start_date}),
'<', DateTime::Format::Pg->format_datetime($c->stash->{end_date}),
};
}
+ my $cat = $c->stash->{category} = $c->get_param('category');
+ $optional_params{category} = $cat if $cat;
+
my %params = (
- %date_params,
+ %optional_params,
state => [ FixMyStreet::DB::Result::Problem->visible_states() ],
);
if ( $c->get_param('export') ) {
- return $self->export_as_csv($c, \%date_params);
+ return $self->export_as_csv($c, \%optional_params);
}
+ # Can change category to any other
+ my @categories = $c->model('DB::Contact')->not_deleted->all;
+ $c->stash->{category_options} = [ map { { name => $_->category, value => $_->category } } @categories ];
+
# Total reports (non-hidden)
my $total = $c->model('DB::Problem')->search( \%params )->count;
# Device for apps (iOS/Android)
@@ -1145,17 +1152,17 @@ sub admin_stats {
group_by => [ 'service' ],
});
# Reports solved
- my $solved = $c->model('DB::Problem')->search( { state => 'fixed - council', %date_params } )->count;
+ my $solved = $c->model('DB::Problem')->search( { state => 'fixed - council', %optional_params } )->count;
# Reports marked as spam
- my $hidden = $c->model('DB::Problem')->search( { state => 'hidden', %date_params } )->count;
+ my $hidden = $c->model('DB::Problem')->search( { state => 'hidden', %optional_params } )->count;
# Reports assigned to third party
- my $closed = $c->model('DB::Problem')->search( { state => 'closed', %date_params } )->count;
+ my $closed = $c->model('DB::Problem')->search( { state => 'closed', %optional_params } )->count;
# Reports moderated within 1 day
- my $moderated = $c->model('DB::Problem')->search( { extra => { like => '%moderated_overdue,I1:0%' }, %date_params } )->count;
+ my $moderated = $c->model('DB::Problem')->search( { extra => { like => '%moderated_overdue,I1:0%' }, %optional_params } )->count;
# Reports solved within 5 days (sent back from subdiv)
my $subdiv_dealtwith = $c->model('DB::Problem')->search( { extra => { like => '%subdiv_overdue,I1:0%' }, %params } )->count;
# Reports solved within 5 days (marked as 'fixed - council', 'closed', or 'hidden'
- my $fixed_in_time = $c->model('DB::Problem')->search( { extra => { like => '%closed_overdue,I1:0%' }, %date_params } )->count;
+ my $fixed_in_time = $c->model('DB::Problem')->search( { extra => { like => '%closed_overdue,I1:0%' }, %optional_params } )->count;
# Reports per category
my $per_category = $c->model('DB::Problem')->search( \%params, {
select => [ 'category', { count => 'id' } ],