Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. namespace App\Actions\FilamentCompanies;
  3. use App\Models\Company;
  4. use App\Models\User;
  5. use Illuminate\Support\Facades\DB;
  6. use Wallo\FilamentCompanies\Contracts\DeletesCompanies;
  7. use Wallo\FilamentCompanies\Contracts\DeletesUsers;
  8. class DeleteUser implements DeletesUsers
  9. {
  10. /**
  11. * The company deleter implementation.
  12. */
  13. protected DeletesCompanies $deletesCompanies;
  14. /**
  15. * Create a new action instance.
  16. */
  17. public function __construct(DeletesCompanies $deletesCompanies)
  18. {
  19. $this->deletesCompanies = $deletesCompanies;
  20. }
  21. /**
  22. * Delete the given user.
  23. */
  24. public function delete(User $user): void
  25. {
  26. DB::transaction(function () use ($user) {
  27. $this->deleteCompanies($user);
  28. $user->deleteProfilePhoto();
  29. $user->connectedAccounts->each(static fn ($account) => $account->delete());
  30. $user->tokens->each(static fn ($token) => $token->delete());
  31. $user->delete();
  32. });
  33. }
  34. /**
  35. * Delete the companies and company associations attached to the user.
  36. */
  37. protected function deleteCompanies(User $user): void
  38. {
  39. $user->companies()->detach();
  40. $user->ownedCompanies->each(function (Company $company) {
  41. $this->deletesCompanies->delete($company);
  42. });
  43. }
  44. }