diff options
Diffstat (limited to 'perllib')
-rw-r--r-- | perllib/FixMyStreet/SendReport.pm | 1 | ||||
-rw-r--r-- | perllib/FixMyStreet/SendReport/Email/Highways.pm | 11 | ||||
-rw-r--r-- | perllib/FixMyStreet/SendReport/Email/SingleBodyOnly.pm | 28 | ||||
-rw-r--r-- | perllib/FixMyStreet/SendReport/Email/TfL.pm | 22 |
4 files changed, 45 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/SendReport.pm b/perllib/FixMyStreet/SendReport.pm index 2739e3043..db95850e6 100644 --- a/perllib/FixMyStreet/SendReport.pm +++ b/perllib/FixMyStreet/SendReport.pm @@ -6,6 +6,7 @@ use MooX::Types::MooseLike::Base qw(:all); use Module::Pluggable sub_name => 'senders', search_path => __PACKAGE__, + except => 'FixMyStreet::SendReport::Email::SingleBodyOnly', require => 1; has 'body_config' => ( is => 'rw', isa => HashRef, default => sub { {} } ); diff --git a/perllib/FixMyStreet/SendReport/Email/Highways.pm b/perllib/FixMyStreet/SendReport/Email/Highways.pm new file mode 100644 index 000000000..2a1f7b305 --- /dev/null +++ b/perllib/FixMyStreet/SendReport/Email/Highways.pm @@ -0,0 +1,11 @@ +package FixMyStreet::SendReport::Email::Highways; + +use Moo; +extends 'FixMyStreet::SendReport::Email::SingleBodyOnly'; + +has contact => ( + is => 'ro', + default => 'Pothole' +); + +1; diff --git a/perllib/FixMyStreet/SendReport/Email/SingleBodyOnly.pm b/perllib/FixMyStreet/SendReport/Email/SingleBodyOnly.pm new file mode 100644 index 000000000..cf778c549 --- /dev/null +++ b/perllib/FixMyStreet/SendReport/Email/SingleBodyOnly.pm @@ -0,0 +1,28 @@ +package FixMyStreet::SendReport::Email::SingleBodyOnly; + +use Moo; +extends 'FixMyStreet::SendReport::Email'; + +has contact => ( + is => 'ro', + default => sub { die 'Need to override contact' } +); + +sub build_recipient_list { + my ( $self, $row, $h ) = @_; + + return unless @{$self->bodies} == 1; + my $body = $self->bodies->[0]; + + # We don't care what the category was, look up the relevant contact + my $contact = $row->result_source->schema->resultset("Contact")->not_deleted->find({ + body_id => $body->id, + category => $self->contact, + }); + return unless $contact; + + @{$self->to} = map { [ $_, $body->name ] } split /,/, $contact->email; + return 1; +} + +1; diff --git a/perllib/FixMyStreet/SendReport/Email/TfL.pm b/perllib/FixMyStreet/SendReport/Email/TfL.pm index 801489c62..383df9792 100644 --- a/perllib/FixMyStreet/SendReport/Email/TfL.pm +++ b/perllib/FixMyStreet/SendReport/Email/TfL.pm @@ -1,23 +1,11 @@ package FixMyStreet::SendReport::Email::TfL; use Moo; -extends 'FixMyStreet::SendReport::Email'; +extends 'FixMyStreet::SendReport::Email::SingleBodyOnly'; -sub build_recipient_list { - my ( $self, $row, $h ) = @_; - - return unless @{$self->bodies} == 1; - my $body = $self->bodies->[0]; - - # We don't care what the category was, look up the Traffic lights contact - my $contact = $row->result_source->schema->resultset("Contact")->not_deleted->find({ - body_id => $body->id, - category => 'Traffic lights', - }); - return unless $contact; - - @{$self->to} = map { [ $_, $body->name ] } split /,/, $contact->email; - return 1; -} +has contact => ( + is => 'ro', + default => 'Traffic lights' +); 1; |