. */ namespace FireflyIII\Api\V1\Controllers\System; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Events\Model\TransactionGroup\CreatedSingleTransactionGroup; use FireflyIII\Events\Model\TransactionGroup\TransactionGroupEventFlags; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class BatchController extends Controller { private JournalRepositoryInterface $repository; /** * UserController constructor. */ public function __construct() { parent::__construct(); $this->middleware(function ($request, $next) { $this->repository = app(JournalRepositoryInterface::class); return $next($request); }); } public function finishBatch(Request $request): JsonResponse { $journals = $this->repository->getUncompletedJournals(); if (0 === count($journals)) { return response()->json([], 204); } /** @var TransactionJournal $first */ $first = $journals->first(); $group = $first?->transactionGroup; if (null === $group) { return response()->json([], 204); } $flags = new TransactionGroupEventFlags(); $flags->applyRules = 'true' === $request->get('apply_rules'); event(new CreatedSingleTransactionGroup($group, $flags)); return response()->json([], 204); } }