mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	Code cleanup.
This commit is contained in:
		| @@ -23,7 +23,6 @@ declare(strict_types=1); | ||||
| 
 | ||||
| namespace FireflyIII\Console\Commands\Upgrade; | ||||
| 
 | ||||
| use DB; | ||||
| use FireflyIII\Console\Commands\ShowsFriendlyMessages; | ||||
| use FireflyIII\Models\Budget; | ||||
| use FireflyIII\Models\Category; | ||||
| @@ -50,7 +49,6 @@ class BackToJournals extends Command | ||||
|     /** | ||||
|      * Execute the console command. | ||||
|      * | ||||
|      * @return int | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
| @@ -68,7 +66,6 @@ class BackToJournals extends Command | ||||
|             $this->friendlyWarning('Forcing the command.'); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         $this->migrateAll(); | ||||
|         $this->friendlyInfo('Updated category and budget info for all transaction journals'); | ||||
|         $this->markAsExecuted(); | ||||
| @@ -77,7 +74,6 @@ class BackToJournals extends Command | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return bool | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
| @@ -89,7 +85,6 @@ class BackToJournals extends Command | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return bool | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
| @@ -100,22 +95,16 @@ class BackToJournals extends Command | ||||
|         return (bool)$configVar->data; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function migrateAll(): void | ||||
|     { | ||||
|         $this->migrateBudgets(); | ||||
|         $this->migrateCategories(); | ||||
| 
 | ||||
|         // empty tables
 | ||||
|         DB::table('budget_transaction')->delete(); | ||||
|         DB::table('category_transaction')->delete(); | ||||
|         \DB::table('budget_transaction')->delete(); | ||||
|         \DB::table('category_transaction')->delete(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function migrateBudgets(): void | ||||
|     { | ||||
|         $journals = new Collection(); | ||||
| @@ -125,45 +114,42 @@ class BackToJournals extends Command | ||||
|             $collected = TransactionJournal::whereIn('id', $journalIds)->with(['transactions', 'budgets', 'transactions.budgets'])->get(); | ||||
|             $journals  = $journals->merge($collected); | ||||
|         } | ||||
| 
 | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($journals as $journal) { | ||||
|             $this->migrateBudgetsForJournal($journal); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array | ||||
|      */ | ||||
|     private function getIdsForBudgets(): array | ||||
|     { | ||||
|         $transactions = DB::table('budget_transaction')->distinct()->pluck('transaction_id')->toArray(); | ||||
|         $transactions = \DB::table('budget_transaction')->distinct()->pluck('transaction_id')->toArray(); | ||||
|         $array        = []; | ||||
|         $chunks       = array_chunk($transactions, 500); | ||||
| 
 | ||||
|         foreach ($chunks as $chunk) { | ||||
|             $set   = DB::table('transactions')->whereIn('transactions.id', $chunk)->pluck('transaction_journal_id')->toArray(); | ||||
|             $set   = \DB::table('transactions')->whereIn('transactions.id', $chunk)->pluck('transaction_journal_id')->toArray(); | ||||
|             $array = array_merge($array, $set); | ||||
|         } | ||||
| 
 | ||||
|         return $array; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param TransactionJournal $journal | ||||
|      */ | ||||
|     private function migrateBudgetsForJournal(TransactionJournal $journal): void | ||||
|     { | ||||
|         // grab category from first transaction
 | ||||
|         /** @var Transaction|null $transaction */ | ||||
|         /** @var null|Transaction $transaction */ | ||||
|         $transaction = $journal->transactions->first(); | ||||
|         if (null === $transaction) { | ||||
|             $this->friendlyInfo(sprintf('Transaction journal #%d has no transactions. Will be fixed later.', $journal->id)); | ||||
| 
 | ||||
|             return; | ||||
|         } | ||||
|         /** @var Budget|null $budget */ | ||||
| 
 | ||||
|         /** @var null|Budget $budget */ | ||||
|         $budget = $transaction->budgets->first(); | ||||
|         /** @var Budget|null $journalBudget */ | ||||
| 
 | ||||
|         /** @var null|Budget $journalBudget */ | ||||
|         $journalBudget = $journal->budgets->first(); | ||||
| 
 | ||||
|         // both have a budget, but they don't match.
 | ||||
| @@ -181,61 +167,55 @@ class BackToJournals extends Command | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function migrateCategories(): void | ||||
|     { | ||||
|         $journals = new Collection(); | ||||
|         $allIds   = $this->getIdsForCategories(); | ||||
| 
 | ||||
| 
 | ||||
|         $chunks = array_chunk($allIds, 500); | ||||
|         foreach ($chunks as $chunk) { | ||||
|             $collected = TransactionJournal::whereIn('id', $chunk)->with(['transactions', 'categories', 'transactions.categories'])->get(); | ||||
|             $journals  = $journals->merge($collected); | ||||
|         } | ||||
| 
 | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($journals as $journal) { | ||||
|             $this->migrateCategoriesForJournal($journal); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array | ||||
|      */ | ||||
|     private function getIdsForCategories(): array | ||||
|     { | ||||
|         $transactions = DB::table('category_transaction')->distinct()->pluck('transaction_id')->toArray(); | ||||
|         $transactions = \DB::table('category_transaction')->distinct()->pluck('transaction_id')->toArray(); | ||||
|         $array        = []; | ||||
|         $chunks       = array_chunk($transactions, 500); | ||||
| 
 | ||||
|         foreach ($chunks as $chunk) { | ||||
|             $set   = DB::table('transactions') | ||||
|                        ->whereIn('transactions.id', $chunk) | ||||
|                        ->pluck('transaction_journal_id')->toArray(); | ||||
|             $set   = \DB::table('transactions') | ||||
|                 ->whereIn('transactions.id', $chunk) | ||||
|                 ->pluck('transaction_journal_id')->toArray() | ||||
|             ; | ||||
|             $array = array_merge($array, $set); | ||||
|         } | ||||
| 
 | ||||
|         return $array; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param TransactionJournal $journal | ||||
|      */ | ||||
|     private function migrateCategoriesForJournal(TransactionJournal $journal): void | ||||
|     { | ||||
|         // grab category from first transaction
 | ||||
|         /** @var Transaction|null $transaction */ | ||||
|         /** @var null|Transaction $transaction */ | ||||
|         $transaction = $journal->transactions->first(); | ||||
|         if (null === $transaction) { | ||||
|             $this->friendlyInfo(sprintf('Transaction journal #%d has no transactions. Will be fixed later.', $journal->id)); | ||||
| 
 | ||||
|             return; | ||||
|         } | ||||
|         /** @var Category|null $category */ | ||||
| 
 | ||||
|         /** @var null|Category $category */ | ||||
|         $category = $transaction->categories->first(); | ||||
|         /** @var Category|null $journalCategory */ | ||||
| 
 | ||||
|         /** @var null|Category $journalCategory */ | ||||
|         $journalCategory = $journal->categories->first(); | ||||
| 
 | ||||
|         // both have a category, but they don't match.
 | ||||
| @@ -250,9 +230,6 @@ class BackToJournals extends Command | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function markAsExecuted(): void | ||||
|     { | ||||
|         app('fireflyconfig')->set(self::CONFIG_NAME, true); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user