diff options
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 13 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/User.pm | 20 |
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; |