. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Data; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Account; use FireflyIII\Models\Bill; use FireflyIII\Models\Budget; use FireflyIII\Models\Category; use FireflyIII\Models\Recurrence; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleGroup; use FireflyIII\Models\Tag; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\User; use Illuminate\Http\JsonResponse; /** * Class PurgeController */ class PurgeController extends Controller { protected array $acceptedRoles = [UserRoleEnum::FULL]; public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { $this->validateUserGroup($request); return $next($request); } ); } /** * TODO cleanup and use repositories. */ public function purge(): JsonResponse { /** @var User $user */ $user = auth()->user(); // some manual code, too lazy to call all repositories. // budgets: Budget::whereUserId($user->id)->onlyTrashed()->forceDelete(); // bills Bill::whereUserId($user->id)->onlyTrashed()->forceDelete(); // piggies $repository = app(PiggyBankRepositoryInterface::class); $repository->setUser($user); $repository->purgeAll(); // rule group RuleGroup::whereUserId($user->id)->onlyTrashed()->forceDelete(); // rules Rule::whereUserId($user->id)->onlyTrashed()->forceDelete(); // recurring transactions Recurrence::whereUserId($user->id)->onlyTrashed()->forceDelete(); // categories Category::whereUserId($user->id)->onlyTrashed()->forceDelete(); // tags Tag::whereUserId($user->id)->onlyTrashed()->forceDelete(); // accounts Account::whereUserId($user->id)->onlyTrashed()->forceDelete(); // transaction groups TransactionGroup::whereUserId($user->id)->onlyTrashed()->forceDelete(); // transaction journals TransactionJournal::whereUserId($user->id)->onlyTrashed()->forceDelete(); return response()->json([], 204); } }