Make sure user group is deleted as well when empty.

This commit is contained in:
James Cole 2021-10-26 06:20:33 +02:00
parent 7dd560a2e3
commit fbf7578fb0
No known key found for this signature in database
GPG Key ID: BDE6667570EADBD5
2 changed files with 25 additions and 0 deletions

View File

@ -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();
}
}
}
}

View File

@ -39,6 +39,11 @@ interface UserRepositoryInterface
*/
public function all(): Collection;
/**
*
*/
public function deleteEmptyGroups(): void;
/**
* Gives a user a role.
*