. */ declare(strict_types=1); namespace FireflyIII\Console\Commands\Correction; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\User; use Illuminate\Console\Command; /** * Class FixAccountOrder */ class FixAccountOrder extends Command { /** * The console command description. * * @var string */ protected $description = 'Make sure account order is correct.'; /** * The name and signature of the console command. * * @var string */ protected $signature = 'firefly-iii:fix-account-order'; private AccountRepositoryInterface $repository; /** * Execute the console command. * * @return int */ public function handle(): int { $this->stupidLaravel(); $start = microtime(true); $users = User::get(); foreach ($users as $user) { $this->repository->setUser($user); $this->repository->resetAccountOrder(); } $end = round(microtime(true) - $start, 2); $this->info(sprintf('Verifying account order took %s seconds', $end)); return 0; } /** * Laravel will execute ALL __construct() methods for ALL commands whenever a SINGLE command is * executed. This leads to noticeable slow-downs and class calls. To prevent this, this method should * be called from the handle method instead of using the constructor to initialize the command. * * @codeCoverageIgnore */ private function stupidLaravel(): void { $this->repository = app(AccountRepositoryInterface::class); } }