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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
package FixMyStreet::Cobrand::Bromley;
use parent 'FixMyStreet::Cobrand::UKCouncils';
use strict;
use warnings;
use DateTime::Format::W3CDTF;
sub council_id { return 2482; }
sub council_area { return 'Bromley'; }
sub council_name { return 'Bromley Council'; }
sub council_url { return 'bromley'; }
sub base_url {
my $self = shift;
return $self->next::method() if FixMyStreet->config('STAGING_SITE');
return 'https://fix.bromley.gov.uk';
}
sub disambiguate_location {
my $self = shift;
my $string = shift;
my $town = 'Bromley';
# There has been a road name change for a section of Ramsden Road
# (BR5) between Church Hill and Court Road has changed to 'Old Priory
# Avenue' - presently entering Old Priory Avenue simply takes the user to
# a different Priory Avenue in Petts Wood
# From Google maps search, "BR6 0PL" is a valid postcode for Old Priory Avenue
if ($string =~/^old\s+priory\s+av\w*$/i) {
$string = 'Ramsden Road';
$town = ', BR6 0PL';
}
# White Horse Hill is on boundary with Greenwich, so need a
# specific postcode
$string = 'BR7 6DH' if $string =~ /^white\s+horse/i;
$town = '' if $string =~ /orpington/i;
return {
%{ $self->SUPER::disambiguate_location() },
town => $town,
centre => '51.366836,0.040623',
span => '0.154963,0.24347',
bounds => [ 51.289355, -0.081112, 51.444318, 0.162358 ],
};
}
sub get_geocoder {
return 'OSM'; # default of Bing gives poor results, let's try overriding.
}
sub example_places {
return ( 'BR1 3UH', 'Glebe Rd, Bromley' );
}
sub map_type {
'Bromley';
}
sub on_map_default_max_pin_age {
return '1 month';
}
# Bromley pins always yellow
sub pin_colour {
my ( $self, $p, $context ) = @_;
return 'yellow';
}
sub recent_photos {
my ( $self, $area, $num, $lat, $lon, $dist ) = @_;
$num = 3 if $num > 3 && $area eq 'alert';
return $self->problems->recent_photos( $num, $lat, $lon, $dist );
}
sub send_questionnaires {
return 0;
}
sub ask_ever_reported {
return 0;
}
sub process_open311_extras {
my $self = shift;
$self->SUPER::process_open311_extras( @_, [ 'first_name', 'last_name' ] );
}
sub contact_email {
my $self = shift;
return join( '@', 'info', 'bromley.gov.uk' );
}
sub contact_name { 'Bromley Council (do not reply)'; }
sub reports_per_page { return 20; }
sub tweak_all_reports_map {
my $self = shift;
my $c = shift;
if ( !$c->stash->{ward} ) {
$c->stash->{map}->{longitude} = 0.040622967881348;
$c->stash->{map}->{latitude} = 51.36690161822;
$c->stash->{map}->{any_zoom} = 0;
$c->stash->{map}->{zoom} = 11;
}
}
sub title_list {
return ["MR", "MISS", "MRS", "MS", "DR"];
}
sub open311_config {
my ($self, $row, $h, $params) = @_;
my $extra = $row->get_extra_fields;
push @$extra,
{ name => 'report_url',
value => $h->{url} },
{ name => 'report_title',
value => $row->title },
{ name => 'public_anonymity_required',
value => $row->anonymous ? 'TRUE' : 'FALSE' },
{ name => 'email_alerts_requested',
value => 'FALSE' }, # always false as can never request them
{ name => 'requested_datetime',
value => DateTime::Format::W3CDTF->format_datetime($row->confirmed->set_nanosecond(0)) },
{ name => 'email',
value => $row->user->email };
# make sure we have last_name attribute present in row's extra, so
# it is passed correctly to Bromley as attribute[]
if ( $row->cobrand ne 'bromley' ) {
my ( $firstname, $lastname ) = ( $row->name =~ /(\w+)\.?\s+(.+)/ );
push @$extra, { name => 'last_name', value => $lastname };
}
$row->set_extra_fields(@$extra);
$params->{always_send_latlong} = 0;
$params->{send_notpinpointed} = 1;
$params->{extended_description} = 0;
}
1;
|