diff --git a/app/Repositories/User/UserRepository.php b/app/Repositories/User/UserRepository.php index ef13628a1f..c5daeccac5 100644 --- a/app/Repositories/User/UserRepository.php +++ b/app/Repositories/User/UserRepository.php @@ -26,6 +26,7 @@ use Exception; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\Role; +use FireflyIII\Models\UserGroup; use FireflyIII\User; use Illuminate\Database\QueryException; use Illuminate\Support\Collection; @@ -164,7 +165,10 @@ class UserRepository implements UserRepositoryInterface public function destroy(User $user): bool { Log::debug(sprintf('Calling delete() on user %d', $user->id)); + + $user->groupMemberships()->delete(); $user->delete(); + $this->deleteEmptyGroups(); return true; } @@ -396,4 +400,20 @@ class UserRepository implements UserRepositoryInterface return true; } + + /** + * @inheritDoc + */ + public function deleteEmptyGroups(): void + { + $groups = UserGroup::get(); + /** @var UserGroup $group */ + foreach ($groups as $group) { + $count = $group->groupMemberships()->count(); + if (0 === $count) { + Log::info(sprintf('Deleted empty group #%d ("%s")', $group->id, $group->title)); + $group->delete(); + } + } + } } diff --git a/app/Repositories/User/UserRepositoryInterface.php b/app/Repositories/User/UserRepositoryInterface.php index 6cc9122f42..6d087cfa43 100644 --- a/app/Repositories/User/UserRepositoryInterface.php +++ b/app/Repositories/User/UserRepositoryInterface.php @@ -39,6 +39,11 @@ interface UserRepositoryInterface */ public function all(): Collection; + /** + * + */ + public function deleteEmptyGroups(): void; + /** * Gives a user a role. *