. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\System; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Events\Model\TransactionGroup\TransactionGroupEventFlags; use FireflyIII\Events\Model\TransactionGroup\UserRequestedBatchProcessing; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; final class BatchController extends Controller { private JournalRepositoryInterface $repository; /** * UserController constructor. */ public function __construct() { parent::__construct(); $this->middleware(function ($request, $next) { $this->repository = app(JournalRepositoryInterface::class); $this->repository->setUser(auth()->user()); // should not have to do this. return $next($request); }); } public function finishBatch(Request $request): JsonResponse { Log::debug('Now in finishBatch.'); $journals = $this->repository->getUncompletedJournals(); if (0 === count($journals)) { Log::debug('Counted zero journals, return.'); return response()->json([], 204); } Log::debug(sprintf('Counted %d journals.', count($journals))); /** @var null|TransactionJournal $first */ $first = $journals->first(); $group = $first?->transactionGroup; if (null === $group) { Log::debug('First group is NULL.'); return response()->json([], 204); } $flags = new TransactionGroupEventFlags(); $flags->applyRules = 'true' === $request->input('apply_rules'); event(new UserRequestedBatchProcessing($flags)); // event(new CreatedSingleTransactionGroup($group, $flags)); return response()->json([], 204); } }