From b9481d39d5632fc34a4242ca61d27c927e485729 Mon Sep 17 00:00:00 2001 From: naomi Date: Sun, 8 May 2022 18:34:02 +0100 Subject: [PATCH] Added total cases to actors --- modules/opencase_cases/opencase_cases.install | 10 ++++++++++ modules/opencase_cases/opencase_cases.module | 17 +++++++++++++++++ .../src/Entity/OCCaseProvision.php | 6 ++++++ .../opencase_entities/src/Entity/OCActor.php | 16 ++++++++++++++++ 4 files changed, 49 insertions(+) diff --git a/modules/opencase_cases/opencase_cases.install b/modules/opencase_cases/opencase_cases.install index 6878285..722e396 100644 --- a/modules/opencase_cases/opencase_cases.install +++ b/modules/opencase_cases/opencase_cases.install @@ -1,6 +1,16 @@ setLabel(t('Number of Cases')) + ->setRevisionable(TRUE) + ->setDisplayConfigurable('view', true); + + \Drupal::entityDefinitionUpdateManager() + ->installFieldStorageDefinition('total_cases', 'oc_actor', 'opencase_cases', $field_storage_definition); +} + function opencase_cases_update_90004() { $field_storage_definition = BaseFieldDefinition::create('string_long') ->setRevisionable(TRUE) diff --git a/modules/opencase_cases/opencase_cases.module b/modules/opencase_cases/opencase_cases.module index 5bf6ae8..c23a3fb 100644 --- a/modules/opencase_cases/opencase_cases.module +++ b/modules/opencase_cases/opencase_cases.module @@ -97,6 +97,23 @@ function opencase_cases_oc_case_fee_delete(Drupal\opencase_cases\entity\OCCaseFe $case->addToTotalFee(0 - $case_fee->amount->value); } + +function opencase_cases_oc_case_provision_insert(Drupal\opencase_cases\entity\OCCaseProvision $case_provision): void { + $provider = $case_provision->getProvider()->incrementTotalCases(); +} +function opencase_cases_oc_case_provision_delete(Drupal\opencase_cases\entity\OCCaseProvision $case_provision): void { + $provider = $case_provision->getProvider()->decrementTotalCases(); +} + +function opencase_cases_oc_case_provision_update(Drupal\opencase_cases\entity\OCCaseProvision $case_provision): void { + $new_provider_id = $case_provision->oc_provider->target_id; + $old_provider_id = $case_provision->original->oc_provider->target_id; + if ($new_provider_id != $old_provider_id) { + $case_provision->getProvider()->incrementTotalCases(); + $case_provision->original->getProvider()->decrementTotalCases(); + } + +} function opencase_cases_entity_base_field_info($entity_type) { $fields = array(); diff --git a/modules/opencase_cases/src/Entity/OCCaseProvision.php b/modules/opencase_cases/src/Entity/OCCaseProvision.php index 19ed3da..b1f3714 100644 --- a/modules/opencase_cases/src/Entity/OCCaseProvision.php +++ b/modules/opencase_cases/src/Entity/OCCaseProvision.php @@ -10,6 +10,8 @@ use Drupal\Core\Entity\EntityChangedTrait; use Drupal\Core\Entity\EntityPublishedTrait; use Drupal\Core\Entity\EntityTypeInterface; use Drupal\user\UserInterface; +use Drupal\opencase_entities\Entity\OCActor; +use Error; /** * Defines the Case Provision entity. @@ -201,6 +203,10 @@ class OCCaseProvision extends EditorialContentEntityBase implements OCCaseProvis return $this; } + public function getProvider():?OCActor { + return OCActor::load($this->oc_provider->target_id); + } + /** * {@inheritdoc} */ diff --git a/modules/opencase_entities/src/Entity/OCActor.php b/modules/opencase_entities/src/Entity/OCActor.php index 49cac12..8cae1ee 100644 --- a/modules/opencase_entities/src/Entity/OCActor.php +++ b/modules/opencase_entities/src/Entity/OCActor.php @@ -207,6 +207,17 @@ class OCActor extends RevisionableContentEntityBase implements OCActorInterface return $this; } + + public function incrementTotalCases(): void { + $this->set('total_cases', $this->total_cases->value + 1); + $this->save(); + } + + public function decrementTotalCases(): void { + $this->set('total_cases', $this->total_cases->value - 1); + $this->save(); + } + /** * {@inheritdoc} */ @@ -331,6 +342,11 @@ class OCActor extends RevisionableContentEntityBase implements OCActorInterface ->setDisplayConfigurable("form", true) ->setDisplayConfigurable("view", true); + $fields['total_cases'] = BaseFieldDefinition::create('integer') + ->setLabel(t('Number of Cases')) + ->setRevisionable(TRUE) + ->setDisplayConfigurable('view', true); + $fields['created'] = BaseFieldDefinition::create('created') ->setLabel(t('Created')) ->setDescription(t('The time that the entity was created.'));