aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm13
-rw-r--r--perllib/FixMyStreet/DB/Result/User.pm20
2 files changed, 29 insertions, 4 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm
index 350024315..1bc15f1f3 100644
--- a/perllib/FixMyStreet/App/Controller/Report/Update.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm
@@ -52,11 +52,16 @@ sub update_problem : Private {
my $problem = $c->stash->{problem} || $update->problem;
if ( $update->mark_fixed eq 't' ) {
- $problem->state( 'fixed' );
+ $problem->state('fixed');
if ( $update->user->id == $problem->user->id ) {
- $problem->send_questionnaire( 'f' );
- $display_questionnaire = 1;
+ $problem->send_questionnaire('f');
+
+ if ( $c->cobrand->ask_ever_reported
+ && !$problem->user->answered_ever_reported )
+ {
+ $display_questionnaire = 1;
+ }
}
}
@@ -65,7 +70,7 @@ sub update_problem : Private {
$c->stash->{problem} = $problem;
- if ( $display_questionnaire ) {
+ if ($display_questionnaire) {
$c->detach('/questionnaire/creator_fixed');
}
diff --git a/perllib/FixMyStreet/DB/Result/User.pm b/perllib/FixMyStreet/DB/Result/User.pm
index c2a652dc6..228e93267 100644
--- a/perllib/FixMyStreet/DB/Result/User.pm
+++ b/perllib/FixMyStreet/DB/Result/User.pm
@@ -94,4 +94,24 @@ sub check_for_errors {
return \%errors;
}
+=head2 answered_ever_reported
+
+Check if the user has ever answered a questionnaire.
+
+=cut
+
+sub answered_ever_reported {
+ my $self = shift;
+
+ my $has_answered =
+ $self->result_source->schema->resultset('Questionnaire')->search(
+ {
+ ever_reported => { not => undef },
+ problem_id => { -in =>
+ $self->problems->get_column('id')->as_query },
+ }
+ );
+
+ return $has_answered->count > 0;
+}
1;