. */ declare(strict_types=1); namespace FireflyIII\Console\Commands\Correction; use FireflyIII\Console\Commands\ShowsFriendlyMessages; use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Models\TransactionJournal; use Illuminate\Console\Command; /** * Report (and fix) piggy banks. * * Class FixPiggies */ class FixPiggies extends Command { use ShowsFriendlyMessages; protected $description = 'Fixes common issues with piggy banks.'; protected $signature = 'firefly-iii:fix-piggies'; /** * Execute the console command. * * @return int */ public function handle(): int { $count = 0; $set = PiggyBankEvent::with(['PiggyBank', 'TransactionJournal'])->get(); /** @var PiggyBankEvent $event */ foreach ($set as $event) { if (null === $event->transaction_journal_id) { continue; } /** @var TransactionJournal|null $journal */ $journal = $event->transactionJournal; if (null === $journal) { $event->transaction_journal_id = null; $event->save(); $count++; continue; } } if (0 === $count) { $this->friendlyPositive('All piggy bank events are OK.'); } if (0 !== $count) { $this->friendlyInfo(sprintf('Fixed %d piggy bank event(s).', $count)); } return 0; } }