aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Open311.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Open311.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Open311.pm61
1 files changed, 26 insertions, 35 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm
index 98e5f42b2..bc08593de 100644
--- a/perllib/FixMyStreet/App/Controller/Open311.pm
+++ b/perllib/FixMyStreet/App/Controller/Open311.pm
@@ -233,44 +233,42 @@ sub output_requests : Private {
my $request =
{
- 'service_request_id' => [ $id ],
- 'title' => [ $problem->title ], # Not in Open311 v2
- 'detail' => [ $problem->detail ], # Not in Open311 v2
- 'description' => [ $problem->title .': ' . $problem->detail ],
- 'lat' => [ $problem->latitude ],
- 'long' => [ $problem->longitude ],
- 'status' => [ $problem->state ],
-# 'status_notes' => [ {} ],
- 'requested_datetime' => [ w3date($problem->confirmed) ],
- 'updated_datetime' => [ w3date($problem->lastupdate) ],
-# 'expected_datetime' => [ {} ],
-# 'address' => [ {} ],
-# 'address_id' => [ {} ],
- 'service_code' => [ $problem->category ],
- 'service_name' => [ $problem->category ],
-# 'service_notice' => [ {} ],
-# 'zipcode' => [ {} ],
- 'interface_used' => [ $problem->service ], # Not in Open311 v2
+ 'service_request_id' => $id,
+ 'title' => $problem->title, # Not in Open311 v2
+ 'detail' => $problem->detail, # Not in Open311 v2
+ 'description' => $problem->title .': ' . $problem->detail,
+ 'lat' => $problem->latitude,
+ 'long' => $problem->longitude,
+ 'status' => $problem->state,
+# 'status_notes' => {},
+ 'requested_datetime' => w3date($problem->confirmed),
+ 'updated_datetime' => w3date($problem->lastupdate),
+# 'expected_datetime' => {},
+# 'address' => {},
+# 'address_id' => {},
+ 'service_code' => $problem->category,
+ 'service_name' => $problem->category,
+# 'service_notice' => {},
+# 'zipcode' => {},
+ 'interface_used' => $problem->service, # Not in Open311 v2
};
if ( $c->cobrand->moniker eq 'zurich' ) {
- $request->{service_notice} = [
- $problem->get_extra_metadata('public_response')
- ];
+ $request->{service_notice} = $problem->get_extra_metadata('public_response');
}
else {
# FIXME Not according to Open311 v2
- $request->{agency_responsible} = $problem->bodies;
+ my @body_names = map { $_->name } values %{$problem->bodies};
+ $request->{agency_responsible} = {'recipient' => [ @body_names ] };
}
if ( !$problem->anonymous ) {
# Not in Open311 v2
- $request->{'requestor_name'} = [ $problem->name ];
+ $request->{'requestor_name'} = $problem->name;
}
if ( $problem->whensent ) {
# Not in Open311 v2
- $request->{'agency_sent_datetime'} =
- [ w3date($problem->whensent) ];
+ $request->{'agency_sent_datetime'} = w3date($problem->whensent);
}
# Extract number of updates
@@ -279,25 +277,18 @@ sub output_requests : Private {
)->count;
if ($updates) {
# Not in Open311 v2
- $request->{'comment_count'} = [ $updates ];
+ $request->{'comment_count'} = $updates;
}
my $display_photos = $c->cobrand->allow_photo_display($problem);
if ($display_photos && $problem->photo) {
my $url = $c->cobrand->base_url();
my $imgurl = $url . $problem->photos->[0]->{url_full};
- $request->{'media_url'} = [ $imgurl ];
+ $request->{'media_url'} = $imgurl;
}
push(@problemlist, $request);
}
- foreach my $request (@problemlist) {
- if ($request->{agency_responsible}) {
- my @body_names = map { $_->name } values %{$request->{agency_responsible}} ;
- $request->{agency_responsible} =
- [ {'recipient' => [ @body_names ] } ];
- }
- }
$c->forward( 'format_output', [ {
'requests' => [ {
'request' => \@problemlist
@@ -432,7 +423,7 @@ sub format_output : Private {
$c->res->body( encode_json($hashref) );
} elsif ('xml' eq $format) {
$c->res->content_type('application/xml; charset=utf-8');
- $c->res->body( XMLout($hashref, RootName => undef) );
+ $c->res->body( XMLout($hashref, RootName => undef, NoAttr => 1 ) );
} else {
$c->detach( 'error', [
sprintf(_('Invalid format %s specified.'), $format)