From 240a55f54fd1a6a04d1989754ff7e05a9cdf9ec8 Mon Sep 17 00:00:00 2001 From: naomi Date: Thu, 30 Dec 2021 13:43:19 +0000 Subject: [PATCH] Activities get deleted when case deleted. --- modules/opencase_cases/opencase_cases.module | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/modules/opencase_cases/opencase_cases.module b/modules/opencase_cases/opencase_cases.module index 18ab180..10e6f6c 100644 --- a/modules/opencase_cases/opencase_cases.module +++ b/modules/opencase_cases/opencase_cases.module @@ -79,6 +79,20 @@ function opencase_cases_get_case_fees(Drupal\opencase_cases\entity\OCCase $case) return $case_fees; } +/** + * @return Drupal\opencase_cases\entity\OCActivity[] + */ +function opencase_cases_get_activities(Drupal\opencase_cases\entity\OCCase $case): array { + $query = \Drupal::entityQuery('oc_activity') + ->condition('oc_case.target_id', $case->id()); + $activity_ids = $query->execute(); + $activities = []; + foreach($activity_ids as $id) { + $activities[] = Drupal\opencase_entities\Entity\OCActivity::load($id); + } + return $activities; +} + function opencase_cases_get_amount(Drupal\opencase_cases\entity\OCCaseFee $case_fee): string { return $case_fee->amount->first()->value; } @@ -132,6 +146,15 @@ function opencase_cases_entity_base_field_info($entity_type) { return $fields; } +// When deleting a case, delete the activities associated with it +function opencase_cases_oc_case_delete(Drupal\opencase_cases\Entity\OCCase $case): void { + $activities = opencase_cases_get_activities($case); + foreach ($activities as $activity) { + $activity->delete(); + } +} + + /** * When creating an activity, it sets the case id from the URL. */