diff options
author | Struan Donald <struan@exo.org.uk> | 2011-08-12 17:34:25 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-08-12 17:34:25 +0100 |
commit | 9ecfbd8ddc99fcff5b421f0dfebfb60c2f5a52d4 (patch) | |
tree | 3d9b5871fbf0f83a24d77ceed946771697c59ce6 /bin/open311-update-reports | |
parent | 5fd2c5c3656ff094ac8c9f083be483f1af947632 (diff) |
shuffle problem update code about to make it easier to test and write some tests
Diffstat (limited to 'bin/open311-update-reports')
-rw-r--r-- | bin/open311-update-reports | 66 |
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; |