aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Cobrand/SeeSomething.pm
blob: 633664dbee04a10e64e6910cde509e1c8a9c82fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package FixMyStreet::Cobrand::SeeSomething;
use parent 'FixMyStreet::Cobrand::UKCouncils';

use strict;
use warnings;

sub council_id { return [ 2520, 2522, 2514, 2546, 2519, 2538, 2535 ]; }
sub council_area { return 'West Midlands'; }
sub council_name { return 'See Something Say Something'; }
sub council_url { return 'seesomething'; }
sub area_types  { [ 'MTD' ] }
sub site_title { return 'See Something, Say Something'; }


sub site_restriction {
    my $self = shift;
    return { council => { IN => $self->council_id  } };
}

sub problems_clause {
    my $self = shift;
    return { council => { IN => $self->council_id  } };
}

sub path_to_web_templates {
    my $self = shift;
    return [
        FixMyStreet->path_to( 'templates/web', $self->moniker )->stringify,
        FixMyStreet->path_to( 'templates/web/fixmystreet' )->stringify
    ];
}

sub council_check {
    my ( $self, $params, $context ) = @_;

    my $councils = $params->{all_councils};
    my $council_match = grep { $councils->{$_} } @{ $self->council_id };

    if ($council_match) {
        return 1;
    }

    return ( 0, "That location is not covered by See Something, Say Something" );
}

sub disambiguate_location {
    my $self    = shift;
    my $string  = shift;

    my $town = 'West Midlands';

    return {
        %{ $self->SUPER::disambiguate_location() },
        town => $town,
        centre => '52.4803101685267,-2.2708272758854',
        span   => '1.4002794815887,2.06340043925997',
        bounds => [ 51.8259444771676, -3.23554082684068, 53.2262239587563, -1.17214038758071 ],
    };
}

sub example_places {
    return ( 'WS1 4NH', 'Austin Drive, Coventry' );
}

sub send_questionnaires {
    return 0;
}

sub ask_ever_reported {
    return 0;
}

sub report_sent_confirmation_email { 1; }

sub report_check_for_errors { return (); }

sub never_confirm_reports { 1; }

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 = shift;
    my $c = $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 $page = $c->req->params->{p} || 1;

    my $p = $c->model('DB::Problem')->search(
        {
            confirmed => { not => undef },
            %filters
        },
        {
            columns => [ qw(
                id detail service category subcategory confirmed
            ) ],
            order_by => { -desc=> [ 'confirmed' ] },
            rows => 20,
        }
    )->page( $page );

    $c->stash->{reports} = $p;
    $c->stash->{pager} = $p->pager;

    return 1;
}

1;