mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-02-08 13:14:39 +00:00
Fix routes and add batch finish command.
This commit is contained in:
68
app/Api/V1/Controllers/System/BatchController.php
Normal file
68
app/Api/V1/Controllers/System/BatchController.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
/*
|
||||
* BatchController.php
|
||||
* Copyright (c) 2026 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -58,6 +58,11 @@ class UserController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public function finishBatch(): JsonResponse {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* This endpoint is documented at:
|
||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/users/deleteUser
|
||||
|
||||
@@ -81,6 +81,7 @@ return [
|
||||
'objectGroup' => ObjectGroup::class,
|
||||
'piggyBank' => PiggyBank::class,
|
||||
'preference' => Preference::class,
|
||||
'preferenceName' => Preference::class,
|
||||
'tj' => TransactionJournal::class,
|
||||
'tag' => Tag::class,
|
||||
'recurrence' => Recurrence::class,
|
||||
|
||||
@@ -730,6 +730,19 @@ Route::group(
|
||||
}
|
||||
);
|
||||
|
||||
// Batch API routes:
|
||||
Route::group(
|
||||
[
|
||||
'middleware' => ['auth:api,sanctum', 'bindings'],
|
||||
'namespace' => 'FireflyIII\Api\V1\Controllers\System',
|
||||
'prefix' => 'v1/batch',
|
||||
'as' => 'api.v1.batch.',
|
||||
],
|
||||
static function (): void {
|
||||
Route::post('finish', ['uses' => 'BatchController@finishBatch', 'as' => 'finish']);
|
||||
}
|
||||
);
|
||||
|
||||
// USER
|
||||
|
||||
// Preference API routes:
|
||||
@@ -743,8 +756,8 @@ Route::group(
|
||||
Route::get('', ['uses' => 'PreferencesController@index', 'as' => 'index']);
|
||||
Route::post('', ['uses' => 'PreferencesController@store', 'as' => 'store']);
|
||||
// Route::get('{preferenceList}', ['uses' => 'PreferencesController@showList', 'as' => 'show-list'])->where('preferenceList', ',+');
|
||||
Route::get('{preference}', ['uses' => 'PreferencesController@show', 'as' => 'show']);
|
||||
Route::put('{preference}', ['uses' => 'PreferencesController@update', 'as' => 'update']);
|
||||
Route::get('{preferenceName}', ['uses' => 'PreferencesController@show', 'as' => 'show']);
|
||||
Route::put('{preferenceName}', ['uses' => 'PreferencesController@update', 'as' => 'update']);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user