From: Bill Erickson Date: Tue, 15 Oct 2019 15:41:57 +0000 (-0400) Subject: LP1845240 Survey API delete improvements X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=a840221f60a2158b285728d51054137d3a374d7a;p=working%2FEvergreen.git LP1845240 Survey API delete improvements Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Survey.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Survey.pm index c5b781846c..11342d3182 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Survey.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Survey.pm @@ -54,10 +54,12 @@ sub update_survey { 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 { @@ -90,19 +92,16 @@ sub update_questions { 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 {