Skip to content

Commit

Permalink
fixup! [Gloucester] Added cobrand front-end
Browse files Browse the repository at this point in the history
  • Loading branch information
chrismytton committed Dec 18, 2024
1 parent 42d41a8 commit 8b2c00d
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 382 deletions.
198 changes: 9 additions & 189 deletions perllib/FixMyStreet/Cobrand/Gloucester.pm
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FixMyStreet::Cobrand::Gloucester - code specific to the Gloucester cobrand
=head1 SYNOPSIS
We integrate with Gloucester's Confirm back end.
We integrate with Gloucester's Alloy back end.
=head1 DESCRIPTION
Expand All @@ -18,31 +18,15 @@ use warnings;

use Moo;

use LWP::Simple;
use URI;
use Try::Tiny;
use JSON::MaybeXS;


=pod
Confirm backends expect some extra values and have some maximum lengths for
certain fields. These roles implement that behaviour.
=cut

with 'FixMyStreet::Roles::ConfirmOpen311';
with 'FixMyStreet::Roles::ConfirmValidation';

=head2 Defaults
=over 4
=cut

sub council_area_id { '2226' }
sub council_area_id { '2325' }
sub council_area { 'Gloucester' }
sub council_name { 'Gloucester County Council' }
sub council_name { 'Gloucester City Council' }
sub council_url { 'gloucester' }

Check warning on line 30 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L27-L30

Added lines #L27 - L30 were not covered by tests

=item * Users with a gloucester.gov.uk email can always be found in the admin.
Expand Down Expand Up @@ -79,204 +63,40 @@ sub reopening_disallowed {
return 1;

Check warning on line 63 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L63

Added line #L63 was not covered by tests
}

=item * Jobs from Confirm that are completed (marked as fixed or closed) are not displayed after 48 hours
=cut

sub report_age {
return {
closed => {
job => '48 hours',
},
fixed => {
job => '48 hours',
},
};
}

=item * We do not send questionnaires.
=cut

sub send_questionnaires { 0 }

Check warning on line 70 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L70

Added line #L70 was not covered by tests

=item * Don't show reports before the go-live date, 4th October 2023
=cut

sub cut_off_date { '2023-10-04' }

=item * Add display_name as an extra contact field
=cut

sub contact_extra_fields { [ 'display_name' ] }

=item * Custom label and hint for new report detail field
=item * TODO: Don't show reports before the go-live date
=cut

sub new_report_detail_field_label {
'Where is the location of the problem? Please be specific and identify the nearest property address or landmark to the problem.'
}

sub new_report_detail_field_hint {
"e.g. 'The drain outside number 42 is blocked'"
}
# sub cut_off_date { '2024-03-31' }

=pod
=back
=cut

=head2 open311_skip_report_fetch
Do not fetch reports from Confirm for categories that are marked private.
=cut

sub open311_skip_report_fetch {
my ( $self, $problem ) = @_;

return 1 if $problem->non_public;
}

=head2 open311_update_missing_data
Unlike the ConfirmOpen311 role, we want to fetch a central asset ID here, not a
site code.
=cut

sub open311_update_missing_data {
my ($self, $row, $h, $contact) = @_;

# In case the client hasn't given us a central asset ID, look up the
# closest asset from the WFS service at the point we're sending the report
if (!$row->get_extra_field_value('central_asset_id')) {
if (my $id = $self->lookup_site_code($row)) {
$row->update_extra_field({ name => 'central_asset_id', value => $id });
}
}
}

sub lookup_site_code_config {
my $host = FixMyStreet->config('STAGING_SITE') ? "tilma.staging.mysociety.org" : "tilma.mysociety.org";
return {
buffer => 200, # metres
url => "https://$host/mapserver/gloucester",
srsname => "urn:ogc:def:crs:EPSG::27700",
typename => "WSF",
property => "CentralAssetId",
accept_feature => sub { 1 }
};
}

=head2 open311_extra_data_include
Gloucester want report title to be in description field, along with
subcategory text, which is not otherwise captured by Confirm. Report detail
goes into the location field.
Subcategory text may need to be fetched from '_wrapped_service_code'
extra data.
=cut

around open311_extra_data_include => sub {
my ( $orig, $self, $row, $h ) = @_;
my $open311_only = $self->$orig( $row, $h );

my $category = $row->category;
my $wrapped_for_report
= $row->get_extra_field_value('_wrapped_service_code');
my $wrapped_categories
= $row->contact->get_extra_field( code => '_wrapped_service_code' );

if ( $wrapped_for_report && $wrapped_categories ) {
($category)
= grep { $_->{key} eq $wrapped_for_report }
@{ $wrapped_categories->{values} };

$category = $category->{name};
}

push @$open311_only, {
name => 'description',
value => $category . ' | ' . $row->title,
};
push @$open311_only, {
name => 'location',
value => $row->detail,
};

return $open311_only;
};


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

Check warning on line 86 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L85-L86

Added lines #L85 - L86 were not covered by tests

my $town = 'Gloucester';

Check warning on line 88 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L88

Added line #L88 was not covered by tests

# As it's the requested example location, try to avoid a disambiguation page
$town .= ', GL20 5XA'
if $string =~ /^\s*gloucester\s+r(oa)?d,\s*tewkesbury\s*$/i;

return {
%{ $self->SUPER::disambiguate_location() },

Check warning on line 91 in perllib/FixMyStreet/Cobrand/Gloucester.pm

View check run for this annotation

Codecov / codecov/patch

perllib/FixMyStreet/Cobrand/Gloucester.pm#L91

Added line #L91 was not covered by tests
town => $town,
centre => '51.825508771929094,-2.1263689427866654',
span => '0.53502964014244,1.07233523662321',
centre => '51.8493825813624,-2.24025312382298',
span => '0.0776436939868574,0.12409536555503',
bounds => [
51.57753580138198, -2.687537158717889,
52.11256544152442, -1.6152019220946803,
51.8075803711933, -2.30135343437398,
51.8852240651802, -2.17725806881895
],
};
}

=head2 is_defect
Returns true if it's a fetched job from Confirm.
=cut

sub is_defect {
my ($self, $p) = @_;
return $p->external_id && $p->external_id =~ /^JOB_/;
}

=head2 pin_colour
Green for anything completed or closed, yellow for the rest,
apart from defects which are blue.
=cut

sub pin_colour {
my ( $self, $p ) = @_;

return 'defects' if $self->is_defect($p);
return 'green' if $p->is_fixed || $p->is_closed;
return 'yellow';
}

sub path_to_pin_icons {
return '/cobrands/oxfordshire/images/';
}

=head2 open311_config
Send multiple photos as files to Open311
=cut

sub open311_config {
my ($self, $row, $h, $params) = @_;

$params->{multi_photos} = 1;
$params->{upload_files} = 1;
}

1;
59 changes: 0 additions & 59 deletions templates/email/gloucester/archive-old-enquiries.html

This file was deleted.

29 changes: 0 additions & 29 deletions templates/email/gloucester/archive-old-enquiries.txt

This file was deleted.

8 changes: 1 addition & 7 deletions templates/web/gloucester/tracking_code.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
[% IF c.config.BASE_URL == "https://www.fixmystreet.com" %]

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-6Z7T');</script>
<!-- End Google Tag Manager -->
<!-- TODO: Add tracking code here -->

[% END %]
Loading

0 comments on commit 8b2c00d

Please sign in to comment.