aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/Open311/Endpoint/Service/Request.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/Open311/Endpoint/Service/Request.pm')
-rw-r--r--perllib/Open311/Endpoint/Service/Request.pm107
1 files changed, 107 insertions, 0 deletions
diff --git a/perllib/Open311/Endpoint/Service/Request.pm b/perllib/Open311/Endpoint/Service/Request.pm
new file mode 100644
index 000000000..b56cee393
--- /dev/null
+++ b/perllib/Open311/Endpoint/Service/Request.pm
@@ -0,0 +1,107 @@
+package Open311::Endpoint::Service::Request;
+use Moo;
+use Types::Standard ':all';
+use namespace::clean;
+
+has service => (
+ is => 'ro',
+ isa => InstanceOf['Open311::Endpoint::Service'],
+ handles => [
+ qw/ service_code service_name /
+ ],
+);
+
+has service_request_id => (
+ is => 'ro',
+ isa => Maybe[Str],
+ predicate => 1,
+);
+
+has token => (
+ is => 'ro',
+ isa => Maybe[Str],
+ predicate => 1,
+);
+
+has service_notice => (
+ is => 'ro',
+ isa => Maybe[Str],
+ predicate => 1,
+);
+
+has account_id => (
+ is => 'ro',
+ isa => Maybe[Str],
+ predicate => 1,
+);
+
+has status => (
+ is => 'rw',
+ isa => Enum[qw/ open closed /],
+ default => sub { 'open' },
+);
+
+has description => (
+ is => 'ro',
+ isa => Maybe[Str],
+);
+
+has agency_responsible => (
+ is => 'ro',
+ isa => Maybe[Str],
+);
+
+has requested_datetime => (
+ is => 'ro',
+ isa => Maybe[ InstanceOf['DateTime'] ],
+);
+
+has updated_datetime => (
+ is => 'ro',
+ isa => Maybe[ InstanceOf['DateTime'] ],
+);
+
+has expected_datetime => (
+ is => 'ro',
+ isa => Maybe[ InstanceOf['DateTime'] ],
+);
+
+has address => (
+ is => 'ro',
+ isa => Str,
+ default => sub { '' },
+);
+
+has address_id => (
+ is => 'ro',
+ isa => Str,
+ default => sub { '' },
+);
+
+has zipcode => (
+ is => 'ro',
+ isa => Str,
+ default => sub { '' },
+);
+
+has latlong => (
+ is => 'ro',
+ isa => Tuple[ Num, Num ],
+ default => sub { [0,0] },
+ handles_via => 'Array',
+ handles => {
+ #lat => [ get => 0 ],
+ #long => [ get => 1 ],
+ }
+);
+
+sub lat { shift->latlong->[0] }
+sub long { shift->latlong->[1] }
+
+has media_url => (
+ is => 'ro',
+ isa => Str,
+ default => sub { '' },
+);
+
+1;