diff --git a/src/Controller/OrganisationController.php b/src/Controller/OrganisationController.php index 737626d..298f699 100644 --- a/src/Controller/OrganisationController.php +++ b/src/Controller/OrganisationController.php @@ -593,6 +593,10 @@ class OrganisationController extends SimpleController // Begin transaction - DB will be rolled back if an exception occurs Capsule::transaction(function () use ($organisation, $currentUser) { + if (!$organisation->flag_approved) { + $verification = $this->ci->repoOrganisationApproval->revert($organisation); + } + $organisation->restore(); // Create activity record diff --git a/src/Repository/OrganisationApprovalRepository.php b/src/Repository/OrganisationApprovalRepository.php index 55ddccb..366ab78 100644 --- a/src/Repository/OrganisationApprovalRepository.php +++ b/src/Repository/OrganisationApprovalRepository.php @@ -114,6 +114,34 @@ class OrganisationApprovalRepository extends TokenRepository return $model; } + /** + * Reverts a token request without requiring the token (admin overrride) + */ + public function revert(OrganisationInterface $organisation) + { + $model = $this->classMapper->getClassMapping($this->modelIdentifier)::query() + ->where('organisation_id', $organisation->id) + ->where('completed', true) + ->first(); + + if ($model === null) { + return false; + } + + // Begin transaction - DB will be rolled back if an exception occurs + Capsule::transaction(function () use ($model) { + $model->fill([ + 'completed' => false, + 'completed_at' => null, + 'approver_id' => null, + ]); + + $model->save(); + }); + + return $model; + } + /** * {@inheritdoc} */