if ($survey->isdeleted) {
- # Remove questions and dependent data first.
+ $questions = $e->search_action_survey_question({survey => $survey->id});
$_->isdeleted(1) for @$questions;
- return $e->die_event unless update_questions($e, $survey);
+ $survey->questions($questions);
+ # Remove dependent data first.
+ return $e->die_event if update_questions($e, $survey);
return $e->die_event unless $e->delete_action_survey($survey);
} else {
if ($question->isdeleted) {
- # delete all of the linked data first.
-
- my $responses = $e->search_action_survey_response({question => $question->id});
- for my $response (@$responses) {
- return $e->die_event unless $e->delete_action_survey_response($response);
- }
-
- my $answers = $e->search_action_survey_answer({question => $question->id});
- for my $answer (@$answers) {
- return $e->die_event unless $e->delete_action_survey_answer($answer);
- }
+ # Get the full set
+ my $answers =
+ $e->search_action_survey_answer({question => $question->id});
+ $_->isdeleted(1) for @$answers;
+ $question->answers($answers);
- return $e->die_event unless $e->delete_action_survey_question($question);
+ # Delete linked objects first.
+ return 1 if update_answers($e, $question);
+ return $e->die_event
+ unless $e->delete_action_survey_question($question);
} else {