diff options
author | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-10-08 15:01:08 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2018-10-09 11:55:37 +0100 |
commit | 67190a155ece50b95941fcfff453fe140ab1bb75 (patch) | |
tree | 152c6c4d047b2017fff396eedd9a080f2e7cb528 /perllib/Open311/PostServiceRequestUpdates.pm | |
parent | 7a0e456e59041b90b527934777f449518ea54065 (diff) |
[Open311] Move send-comments cobrand specific code
Diffstat (limited to 'perllib/Open311/PostServiceRequestUpdates.pm')
-rwxr-xr-x | perllib/Open311/PostServiceRequestUpdates.pm | 63 |
1 files changed, 9 insertions, 54 deletions
diff --git a/perllib/Open311/PostServiceRequestUpdates.pm b/perllib/Open311/PostServiceRequestUpdates.pm index dccd26184..63e149ece 100755 --- a/perllib/Open311/PostServiceRequestUpdates.pm +++ b/perllib/Open311/PostServiceRequestUpdates.pm @@ -13,13 +13,7 @@ use Open311; use constant SEND_METHOD_OPEN311 => 'Open311'; -use constant COUNCIL_ID_OXFORDSHIRE => 2237; -use constant COUNCIL_ID_BROMLEY => 2482; -use constant COUNCIL_ID_LEWISHAM => 2492; -use constant COUNCIL_ID_BUCKS => 2217; - has verbose => ( is => 'ro', default => 0 ); -has site => ( is => 'ro', default => '' ); sub send { my $self = shift; @@ -30,12 +24,8 @@ sub send { } ); while ( my $body = $bodies->next ) { - # XXX Cobrand specific - see also list in Problem->updates_sent_to_body - if ($self->site eq 'fixmystreet.com') { - # Lewisham does not yet accept updates - next if $body->areas->{+COUNCIL_ID_LEWISHAM}; - } - + my $cobrand = $body->get_cobrand_handler; + next if $cobrand && $cobrand->call_hook('open311_post_update_skip'); $self->process_body($body); } } @@ -43,29 +33,16 @@ sub send { sub open311_params { my ($self, $body) = @_; - my $use_extended = 0; - if ( $self->site eq 'fixmystreet.com' && $body->areas->{+COUNCIL_ID_BROMLEY} ) { - $use_extended = 1; - } - my %open311_conf = ( endpoint => $body->endpoint, jurisdiction => $body->jurisdiction, api_key => $body->api_key, - use_extended_updates => $use_extended, + extended_statuses => $body->send_extended_statuses, ); - if ( $body->areas->{+COUNCIL_ID_OXFORDSHIRE} ) { - $open311_conf{use_customer_reference} = 1; - } - - if ( $body->areas->{+COUNCIL_ID_BUCKS} ) { - $open311_conf{mark_reopen} = 1; - } - - if ( $body->send_extended_statuses ) { - $open311_conf{extended_statuses} = 1; - } + my $cobrand = $body->get_cobrand_handler; + $cobrand->call_hook(open311_config_updates => \%open311_conf) + if $cobrand; return %open311_conf; } @@ -75,13 +52,6 @@ sub process_body { my $o = Open311->new( $self->open311_params($body) ); - if ( $self->site eq 'fixmystreet.com' && $body->areas->{+COUNCIL_ID_BROMLEY} ) { - my $endpoints = $o->endpoints; - $endpoints->{update} = 'update.xml'; - $endpoints->{service_request_updates} = 'update.xml'; - $o->endpoints( $endpoints ); - } - my $comments = FixMyStreet::DB->resultset('Comment')->search( { 'me.whensent' => undef, 'me.external_id' => undef, @@ -111,31 +81,16 @@ sub process_body { next; } - # Oxfordshire stores the external id of the problem as a customer reference - # in metadata - if ($body->areas->{+COUNCIL_ID_OXFORDSHIRE} && - !$comment->problem->get_extra_metadata('customer_reference') ) { - next; - } - next if !$self->verbose && $comment->send_fail_count && retry_timeout($comment); - $self->process_update($body, $o, $comment); + $self->process_update($body, $o, $comment, $cobrand); } } sub process_update { - my ($self, $body, $o, $comment) = @_; - - if ( $self->site eq 'fixmystreet.com' && $body->areas->{+COUNCIL_ID_BROMLEY} ) { - my $extra = $comment->extra; - $extra = {} if !$extra; + my ($self, $body, $o, $comment, $cobrand) = @_; - unless ( $extra->{title} ) { - $extra->{title} = $comment->user->title; - $comment->extra( $extra ); - } - } + $cobrand->call_hook(open311_pre_send => $comment, $o); my $id = $o->post_service_request_update( $comment ); |