aboutsummaryrefslogtreecommitdiffstats
path: root/bin/open311-update-reports
diff options
context:
space:
mode:
Diffstat (limited to 'bin/open311-update-reports')
-rw-r--r--bin/open311-update-reports66
1 files changed, 5 insertions, 61 deletions
diff --git a/bin/open311-update-reports b/bin/open311-update-reports
index 3dfb89feb..41c9c4546 100644
--- a/bin/open311-update-reports
+++ b/bin/open311-update-reports
@@ -2,7 +2,7 @@
use strict;
use warnings;
-use Open311;
+use Open311::GetUpdates;
use FixMyStreet::App;
# FIXME - make this configurable and/or better
@@ -15,63 +15,7 @@ my $system_user = FixMyStreet::App->model('DB::User')->find_or_create(
my $council_list = FixMyStreet::App->model('DB::Open311conf');
-while ( my $council = $council_list->next ) {
-
- my $open311 = Open311->new(
- endpoint => $council->endpoint,
- jurisdiction => $council->jurisdiction,
- api_key => $council->api_key
- );
-
- my $area_id = $council->area_id;
-
- my $council_details = mySociety::MaPit::call( 'area', $area_id );
-
- my $reports = FixMyStreet::App->model('DB::Problem')->search(
- {
- council => { like => "\%$area_id\%" },
- state => { 'IN', [qw/confirmed fixed/] },
- -and => [
- external_id => { '!=', undef },
- external_id => { '!=', '' },
- ],
- }
- );
-
- my @report_ids = ();
- while ( my $report = $reports->next ) {
- push @report_ids, $report->external_id;
- }
-
- next unless @report_ids;
-
- my $service_requests = $open311->get_service_requests( \@report_ids );
-
- my $requests;
-
- # XML::Simple is a bit inconsistent in how it structures
- # things depending on the number of children an element has :(
- if ( ref $service_requests->{request} eq 'ARRAY' ) {
- $requests = $service_requests->{request};
- }
- else {
- $requests = [ $service_requests->{request} ];
- }
-
- for my $request (@$requests) {
- # if it's a ref that means it's an empty element
- # however, if there's no updated date then we can't
- # tell if it's newer that what we have so we should skip it
- next if ref $request->{updated_datetime} || ! exists $request->{updated_datetime};
-
- my $request_id = $request->{service_request_id};
-
- my $problem =
- FixMyStreet::App->model('DB::Problem')
- ->search( { external_id => $request_id, } );
-
- if (my $p = $problem->first) {
- $p->update_from_open311_service_request( $request, $council_details );
- }
- }
-}
+my $update = Open311::GetUpdates->new(
+ council_list => $council_list,
+ system_user => $system_user
+)->get_updates;