diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 4 | ||||
-rw-r--r-- | perllib/FixMyStreet/Cobrand/SeeSomething.pm | 40 |
2 files changed, 44 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 4999d16f2..1bb9c8e4c 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -925,6 +925,10 @@ sub stats : Path('stats') : Args(0) { $c->forward('check_page_allowed'); + if ( $c->cobrand->moniker eq 'seesomething' ) { + return $c->cobrand->admin_stats( $c ); + } + $c->forward('set_up_council_details'); if ( $c->req->param('getcounts') ) { diff --git a/perllib/FixMyStreet/Cobrand/SeeSomething.pm b/perllib/FixMyStreet/Cobrand/SeeSomething.pm index 629a5ee50..ca7657176 100644 --- a/perllib/FixMyStreet/Cobrand/SeeSomething.pm +++ b/perllib/FixMyStreet/Cobrand/SeeSomething.pm @@ -80,5 +80,45 @@ sub allow_anonymous_reports { 1; } sub anonymous_account { return { name => 'anon user', email => 'anon@example.com' }; } +sub admin_pages { + my $self = shift; + + return { + 'stats' => ['Reports', 0], + }; +}; + +sub admin_stats { + my ( $self, $c ) = @_; + + my %filters = (); + + if ( !$c->user_exists || !grep { $_ == $c->user->from_council } @{ $self->council_id } ) { + $c->detach( '/page_error_404_not_found' ); + } + + if ( $c->req->param('category') ) { + $filters{category} = $c->req->param('category'); + } + + if ( $c->req->param('subcategory') ) { + $filters{subcategory} = $c->req->param('subcategory'); + } + + my $p = $c->model('DB::Problem')->search( + { + confirmed => { not => undef }, + %filters + }, + { + order_by => { -desc=> [ 'confirmed' ] } + } + ); + + $c->stash->{reports} = $p; + + return 1; +} + 1; |