Compare commits
3 Commits
cfec9be05c
...
9351768b25
Author | SHA1 | Date |
---|---|---|
naomi | 9351768b25 | |
naomi | 1c61f2f0a4 | |
naomi | 13fb920e69 |
|
@ -68,19 +68,6 @@ function opencase_cases_theme() {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @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_oc_case_fee_update(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void {
|
function opencase_cases_oc_case_fee_update(Drupal\opencase_cases\entity\OCCaseFee $case_fee): void {
|
||||||
$case = $case_fee->getCase();
|
$case = $case_fee->getCase();
|
||||||
|
@ -119,13 +106,6 @@ function opencase_cases_entity_base_field_info($entity_type) {
|
||||||
return $fields;
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -91,6 +91,24 @@ class OCCase extends RevisionableContentEntityBase implements OCCaseInterface
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deleteCaseProvisions(): void {
|
||||||
|
$this->deleteChildren('oc_case_provision');
|
||||||
|
}
|
||||||
|
public function deleteActivities(): void {
|
||||||
|
$this->deleteChildren('oc_activity');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function deleteChildren($child_entity_type):void {
|
||||||
|
$query = \Drupal::entityQuery($child_entity_type)
|
||||||
|
->condition('oc_case.target_id', $this->id());
|
||||||
|
$ids = $query->execute();
|
||||||
|
foreach($ids as $id) {
|
||||||
|
\Drupal::entityTypeManager()
|
||||||
|
->getStorage($child_entity_type)
|
||||||
|
->load($id)->delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function defaultTarget()
|
public static function defaultTarget()
|
||||||
{
|
{
|
||||||
|
|
|
@ -208,15 +208,17 @@ class OCActor extends RevisionableContentEntityBase implements OCActorInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getCountOfCaseProvisions(array $conditions = []): int {
|
public function getCountOfCaseProvisions(array $conditionsToApplyToCaseProvisionQuery = []): int {
|
||||||
$query = \Drupal::entityQuery('oc_case_provision');
|
$query = \Drupal::entityQuery('oc_case_provision');
|
||||||
$query->condition('oc_provider', $this->id());
|
$query->condition('oc_provider', $this->id());
|
||||||
// foreach($conditions as $condition) {
|
|
||||||
// $query->condition($condition);
|
|
||||||
// }
|
|
||||||
return count($query->execute());
|
return count($query->execute());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function calculateTotalCases(): void {
|
||||||
|
$this->set('total_cases', $this->getCountOfCaseProvisions());
|
||||||
|
$this->save();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
|
|
||||||
use Drupal\Core\Render\Element;
|
use Drupal\Core\Render\Element;
|
||||||
use Drupal\Core\Access\AccessResult;
|
use Drupal\Core\Access\AccessResult;
|
||||||
|
use Drupal\opencase_cases\Entity\OCCase;
|
||||||
use Drupal\Core\Routing\RouteMatchInterface;
|
use Drupal\Core\Routing\RouteMatchInterface;
|
||||||
|
use Drupal\opencase_cases\Entity\OCCaseProvision;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_element_info_alter().
|
* Implements hook_element_info_alter().
|
||||||
|
@ -44,6 +46,21 @@ function opencase_process_element($element) {
|
||||||
$element['time']['#attributes']['step'] = 60;
|
$element['time']['#attributes']['step'] = 60;
|
||||||
return $element;
|
return $element;
|
||||||
}
|
}
|
||||||
|
function opencase_oc_case_provision_insert(OCCaseProvision $case_provision): void {
|
||||||
|
$case_provision->oc_provider->entity->calculateTotalCases();
|
||||||
|
}
|
||||||
|
function opencase_oc_case_provision_delete(OCCaseProvision $case_provision): void {
|
||||||
|
$case_provision->oc_provider->entity->calculateTotalCases();
|
||||||
|
}
|
||||||
|
function opencase_oc_case_provision_update(OCCaseProvision $case_provision): void {
|
||||||
|
$case_provision->oc_provider->entity->calculateTotalCases();
|
||||||
|
$case_provision->original->oc_provider->entity->calculateTotalCases();
|
||||||
|
}
|
||||||
|
|
||||||
|
function opencase_oc_case_delete(OCCase $case): void {
|
||||||
|
$case->deleteCaseProvisions();
|
||||||
|
$case->deleteActivities();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_page_attachments
|
* Implements hook_page_attachments
|
||||||
|
|
Reference in New Issue