aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/Buckinghamshire.pm2
-rw-r--r--perllib/FixMyStreet/Cobrand/Rutland.pm9
-rw-r--r--perllib/Open311.pm31
-rw-r--r--perllib/Open311/GetServiceRequestUpdates.pm41
-rw-r--r--perllib/Open311/GetServiceRequests.pm3
6 files changed, 66 insertions, 22 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index 1646bc4d5..e36085d05 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -426,7 +426,7 @@ sub inspect : Private {
cobrand_data => $problem->cobrand_data,
lang => $problem->lang,
};
- $problem->user->create_alert($problem->id, $options);
+ $c->user->create_alert($problem->id, $options);
}
# If the state has been changed to action scheduled and they've said
diff --git a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
index e1c119cfb..a1ba25e6c 100644
--- a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
+++ b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
@@ -322,7 +322,7 @@ sub lookup_site_code {
my $self = shift;
my $row = shift;
- my $buffer = 5; # metres
+ my $buffer = 10; # metres
my ($x, $y) = $row->local_coords;
my ($w, $s, $e, $n) = ($x-$buffer, $y-$buffer, $x+$buffer, $y+$buffer);
diff --git a/perllib/FixMyStreet/Cobrand/Rutland.pm b/perllib/FixMyStreet/Cobrand/Rutland.pm
index c0f9dd197..2e4d434b5 100644
--- a/perllib/FixMyStreet/Cobrand/Rutland.pm
+++ b/perllib/FixMyStreet/Cobrand/Rutland.pm
@@ -43,4 +43,13 @@ sub pin_colour {
return 'green' if $p->is_fixed || $p->is_closed;
return 'yellow';
}
+
+sub send_questionnaires {
+ return 0;
+}
+
+sub ask_ever_reported {
+ return 0;
+}
+
1;
diff --git a/perllib/Open311.pm b/perllib/Open311.pm
index a65e19fa6..dc40076db 100644
--- a/perllib/Open311.pm
+++ b/perllib/Open311.pm
@@ -126,7 +126,7 @@ sub _populate_service_request_params {
$description = $problem->detail;
}
- my ( $firstname, $lastname ) = ( $problem->name =~ /(\w+)\.?\s+(.+)/ );
+ my ( $firstname, $lastname ) = $self->split_name( $problem->name );
my $params = {
description => $description,
@@ -338,7 +338,7 @@ sub _populate_service_request_update_params {
my $comment = shift;
my $name = $comment->name || $comment->user->name;
- my ( $firstname, $lastname ) = ( $name =~ /(\w+)\.?\s+(.+)/ );
+ my ( $firstname, $lastname ) = $self->split_name( $name );
$lastname ||= '-';
# fall back to problem state as it's probably correct
@@ -410,6 +410,29 @@ sub _populate_service_request_update_params {
return $params;
}
+sub split_name {
+ my ( $self, $name ) = @_;
+
+ my ( $first, $last ) = ( $name =~ /(\w+)(?:\.?\s+(.+))?/ );
+
+ return ( $first, $last );
+}
+
+sub _params_to_string {
+ my( $self, $params, $request_string ) = @_;
+
+ my $undefined;
+
+ my $string = join("\n", map {
+ $undefined .= "$_ undefined\n" unless defined $params->{$_};
+ "$_: " . ( $params->{$_} // '' );
+ } keys %$params);
+
+ warn "$request_string $undefined $string" if $undefined;
+
+ return $string;
+}
+
sub _get {
my $self = shift;
my $path = shift;
@@ -424,7 +447,7 @@ sub _get {
$uri->query_form( $params );
my $debug_request = "GET " . $base_uri->as_string . "\n\n";
- $debug_request .= join("\n", map { "$_: $params->{$_}" } keys %$params);
+ $debug_request .= $self->_params_to_string($params, $debug_request);
$self->debug_details( $self->debug_details . $debug_request );
my $content;
@@ -472,7 +495,7 @@ sub _post {
my $req = POST $uri->as_string, $params;
my $debug_request = $req->method . ' ' . $uri->as_string . "\n\n";
- $debug_request .= join("\n", map { "$_: $params->{$_}" } keys %$params);
+ $debug_request .= $self->_params_to_string($params, $debug_request);
$self->debug_details( $self->debug_details . $debug_request );
my $ua = LWP::UserAgent->new();
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm
index b3b165d27..e052e4bd4 100644
--- a/perllib/Open311/GetServiceRequestUpdates.pm
+++ b/perllib/Open311/GetServiceRequestUpdates.pm
@@ -110,13 +110,18 @@ sub update_comments {
if ( !$c->first ) {
my $state = $open311->map_state( $request->{status} );
- my $external_status_code = $request->{external_status_code};
+ my $old_state = $p->state;
+ my $external_status_code = $request->{external_status_code} || '';
+ my $old_external_status_code = $p->get_extra_metadata('external_status_code') || '';
my $comment = $self->schema->resultset('Comment')->new(
{
problem => $p,
user => $self->system_user,
external_id => $request->{update_id},
- text => $self->comment_text_for_request($request, $p, $state, $external_status_code),
+ text => $self->comment_text_for_request(
+ $request, $p, $state, $old_state,
+ $external_status_code, $old_external_status_code
+ ),
mark_fixed => 0,
mark_open => 0,
anonymous => 0,
@@ -184,22 +189,28 @@ sub update_comments {
}
sub comment_text_for_request {
- my ($self, $request, $problem, $state, $external_status_code) = @_;
+ my ($self, $request, $problem, $state, $old_state,
+ $ext_code, $old_ext_code) = @_;
return $request->{description} if $request->{description};
- my $state_params = {
- 'me.state' => $state
- };
- if ($external_status_code) {
- $state_params->{'me.external_status_code'} = $external_status_code;
- };
-
- if (my $template = $problem->response_templates->search({
- auto_response => 1,
- -or => $state_params,
- })->first) {
- return $template->text;
+ # Response templates are only triggered if the state/external status has changed
+ my $state_changed = $state ne $old_state;
+ my $ext_code_changed = $ext_code ne $old_ext_code;
+ if ($state_changed || $ext_code_changed) {
+ my $state_params = {
+ 'me.state' => $state
+ };
+ if ($ext_code) {
+ $state_params->{'me.external_status_code'} = $ext_code;
+ };
+
+ if (my $template = $problem->response_templates->search({
+ auto_response => 1,
+ -or => $state_params,
+ })->first) {
+ return $template->text;
+ }
}
return "" if $self->blank_updates_permitted;
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm
index 48e35acab..2d15347fd 100644
--- a/perllib/Open311/GetServiceRequests.pm
+++ b/perllib/Open311/GetServiceRequests.pm
@@ -127,7 +127,8 @@ sub create_problems {
$updated_time->clone->set_time_zone('UTC')
);
if ($args->{start_date} && $args->{end_date} && ($updated lt $args->{start_date} || $updated gt $args->{end_date}) ) {
- warn "Problem id $request_id for @{[$body->name]} has an invalid time, not creating"
+ warn "Problem id $request_id for @{[$body->name]} has an invalid time, not creating: "
+ . "$updated either less than $args->{start_date} or greater than $args->{end_date}"
if $self->verbose;
next;
}