mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Add missing API endpoints.
This commit is contained in:
parent
93856a3c57
commit
eabda85b1e
@ -80,9 +80,10 @@ class TransactionController extends Controller
|
|||||||
/** @var TransactionJournal $journal */
|
/** @var TransactionJournal $journal */
|
||||||
foreach ($filtered as $journal) {
|
foreach ($filtered as $journal) {
|
||||||
$array[] = [
|
$array[] = [
|
||||||
'id' => $journal->id,
|
'id' => $journal->id,
|
||||||
'name' => $journal->description,
|
'transaction_group_id' => $journal->transaction_group_id,
|
||||||
'description' => $journal->description,
|
'name' => $journal->description,
|
||||||
|
'description' => $journal->description,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,22 +91,14 @@ class TransactionController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Searches in the titles of all transaction journals.
|
|
||||||
* The result is limited to the top 15 unique results.
|
|
||||||
*
|
|
||||||
* If the query is numeric, it will append the journal with that particular ID.
|
|
||||||
*
|
|
||||||
* @param AutocompleteRequest $request
|
* @param AutocompleteRequest $request
|
||||||
*
|
*
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
*/
|
*/
|
||||||
public function allJournalsWithID(AutocompleteRequest $request): JsonResponse
|
public function transactionsWithID(AutocompleteRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$data = $request->getData();
|
$data = $request->getData();
|
||||||
$array = [];
|
|
||||||
$result = new Collection;
|
$result = new Collection;
|
||||||
|
|
||||||
|
|
||||||
if (is_numeric($data['query'])) {
|
if (is_numeric($data['query'])) {
|
||||||
// search for group, not journal.
|
// search for group, not journal.
|
||||||
$firstResult = $this->groupRepository->find((int) $data['query']);
|
$firstResult = $this->groupRepository->find((int) $data['query']);
|
||||||
@ -120,12 +113,16 @@ class TransactionController extends Controller
|
|||||||
$result = $this->repository->searchJournalDescriptions($data['query'], $data['limit']);
|
$result = $this->repository->searchJournalDescriptions($data['query'], $data['limit']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// limit and unique
|
||||||
|
$array = [];
|
||||||
|
|
||||||
/** @var TransactionJournal $journal */
|
/** @var TransactionJournal $journal */
|
||||||
foreach ($result as $journal) {
|
foreach ($result as $journal) {
|
||||||
$array[] = [
|
$array[] = [
|
||||||
'id' => $journal->id,
|
'id' => $journal->id,
|
||||||
'name' => printf('#%d: %s', $journal->id, $journal->description),
|
'transaction_group_id' => $journal->transaction_group_id,
|
||||||
'description' => $journal->description,
|
'name' => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description),
|
||||||
|
'description' => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ use FireflyIII\Support\Http\Api\TransactionFilter;
|
|||||||
use FireflyIII\Transformers\AttachmentTransformer;
|
use FireflyIII\Transformers\AttachmentTransformer;
|
||||||
use FireflyIII\Transformers\PiggyBankEventTransformer;
|
use FireflyIII\Transformers\PiggyBankEventTransformer;
|
||||||
use FireflyIII\Transformers\TransactionGroupTransformer;
|
use FireflyIII\Transformers\TransactionGroupTransformer;
|
||||||
|
use FireflyIII\Transformers\TransactionLinkTransformer;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@ -57,12 +58,9 @@ class TransactionController extends Controller
|
|||||||
{
|
{
|
||||||
use TransactionFilter;
|
use TransactionFilter;
|
||||||
|
|
||||||
/** @var TransactionGroupRepositoryInterface Group repository. */
|
private TransactionGroupRepositoryInterface $groupRepository;
|
||||||
private $groupRepository;
|
private JournalAPIRepositoryInterface $journalAPIRepository;
|
||||||
/** @var JournalAPIRepositoryInterface Journal API repos */
|
private JournalRepositoryInterface $repository;
|
||||||
private $journalAPIRepository;
|
|
||||||
/** @var JournalRepositoryInterface The journal repository */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TransactionController constructor.
|
* TransactionController constructor.
|
||||||
@ -112,6 +110,29 @@ class TransactionController extends Controller
|
|||||||
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
|
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param TransactionGroup $transactionGroup
|
||||||
|
*
|
||||||
|
* @return JsonResponse
|
||||||
|
* @codeCoverageIgnore
|
||||||
|
*/
|
||||||
|
public function transactionLinks(TransactionGroup $transactionGroup): JsonResponse
|
||||||
|
{
|
||||||
|
$manager = $this->getManager();
|
||||||
|
$journalLinks = new Collection;
|
||||||
|
foreach ($transactionGroup->transactionJournals as $transactionJournal) {
|
||||||
|
$journalLinks = $this->journalAPIRepository->getJournalLinks($transactionJournal)->merge($journalLinks);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var TransactionLinkTransformer $transformer */
|
||||||
|
$transformer = app(TransactionLinkTransformer::class);
|
||||||
|
$transformer->setParameters($this->parameters);
|
||||||
|
|
||||||
|
$resource = new FractalCollection($journalLinks, $transformer, 'transaction_links');
|
||||||
|
|
||||||
|
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', 'application/vnd.api+json');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specified resource from storage.
|
* Remove the specified resource from storage.
|
||||||
*
|
*
|
||||||
|
@ -43,9 +43,7 @@ use League\Fractal\Resource\Item;
|
|||||||
*/
|
*/
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
{
|
{
|
||||||
|
private UserRepositoryInterface $repository;
|
||||||
/** @var UserRepositoryInterface The user repository */
|
|
||||||
private $repository;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UserController constructor.
|
* UserController constructor.
|
||||||
|
@ -121,4 +121,14 @@ class JournalAPIRepository implements JournalAPIRepositoryInterface
|
|||||||
{
|
{
|
||||||
$this->user = $user;
|
$this->user = $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getJournalLinks(TransactionJournal $journal): Collection
|
||||||
|
{
|
||||||
|
$collection = $journal->destJournalLinks()->get();
|
||||||
|
|
||||||
|
return $journal->sourceJournalLinks()->get()->merge($collection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,15 @@ interface JournalAPIRepositoryInterface
|
|||||||
*/
|
*/
|
||||||
public function getAttachments(TransactionJournal $journal): Collection;
|
public function getAttachments(TransactionJournal $journal): Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all journal links for journal.
|
||||||
|
*
|
||||||
|
* @param TransactionJournal $journal
|
||||||
|
*
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function getJournalLinks(TransactionJournal $journal): Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all piggy bank events for a journal.
|
* Get all piggy bank events for a journal.
|
||||||
*
|
*
|
||||||
|
@ -28,6 +28,7 @@ use FireflyIII\User;
|
|||||||
use Illuminate\Database\QueryException;
|
use Illuminate\Database\QueryException;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Log;
|
use Log;
|
||||||
|
use Str;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UserRepository.
|
* Class UserRepository.
|
||||||
@ -327,7 +328,7 @@ class UserRepository implements UserRepositoryInterface
|
|||||||
'blocked' => $data['blocked'] ?? false,
|
'blocked' => $data['blocked'] ?? false,
|
||||||
'blocked_code' => $data['blocked_code'] ?? null,
|
'blocked_code' => $data['blocked_code'] ?? null,
|
||||||
'email' => $data['email'],
|
'email' => $data['email'],
|
||||||
'password' => str_random(24),
|
'password' => Str::random(24),
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
$role = $data['role'] ?? '';
|
$role = $data['role'] ?? '';
|
||||||
|
@ -66,7 +66,7 @@ function makeAutoComplete() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
remote: {
|
remote: {
|
||||||
url: acURI + '?search=%QUERY&uid=' + uid,
|
url: acURI + '?query=%QUERY&uid=' + uid,
|
||||||
wildcard: '%QUERY',
|
wildcard: '%QUERY',
|
||||||
filter: function (list) {
|
filter: function (list) {
|
||||||
return $.map(list, function (item) {
|
return $.map(list, function (item) {
|
||||||
@ -85,4 +85,4 @@ function selectedJournal(event, journal) {
|
|||||||
$('#journal-selection').show();
|
$('#journal-selection').show();
|
||||||
$('#selected-journal').html('<a href="' + groupURI.replace('%GROUP%', journal.transaction_group_id) + '">' + journal.description + '</a>').show();
|
$('#selected-journal').html('<a href="' + groupURI.replace('%GROUP%', journal.transaction_group_id) + '">' + journal.description + '</a>').show();
|
||||||
$('input[name="opposing"]').val(journal.id);
|
$('input[name="opposing"]').val(journal.id);
|
||||||
}
|
}
|
||||||
|
@ -481,6 +481,7 @@ Route::group(
|
|||||||
Route::get('{transactionGroup}', ['uses' => 'TransactionController@show', 'as' => 'show']);
|
Route::get('{transactionGroup}', ['uses' => 'TransactionController@show', 'as' => 'show']);
|
||||||
Route::get('{transactionGroup}/attachments', ['uses' => 'TransactionController@attachments', 'as' => 'attachments']);
|
Route::get('{transactionGroup}/attachments', ['uses' => 'TransactionController@attachments', 'as' => 'attachments']);
|
||||||
Route::get('{transactionGroup}/piggy_bank_events', ['uses' => 'TransactionController@piggyBankEvents', 'as' => 'piggy_bank_events']);
|
Route::get('{transactionGroup}/piggy_bank_events', ['uses' => 'TransactionController@piggyBankEvents', 'as' => 'piggy_bank_events']);
|
||||||
|
Route::get('{transactionGroup}/transaction_links', ['uses' => 'TransactionController@transactionLinks', 'as' => 'transaction_links']);
|
||||||
Route::put('{transactionGroup}', ['uses' => 'TransactionController@update', 'as' => 'update']);
|
Route::put('{transactionGroup}', ['uses' => 'TransactionController@update', 'as' => 'update']);
|
||||||
Route::delete('{transactionGroup}/{transactionJournal}', ['uses' => 'TransactionController@deleteJournal', 'as' => 'delete-journal']);
|
Route::delete('{transactionGroup}/{transactionJournal}', ['uses' => 'TransactionController@deleteJournal', 'as' => 'delete-journal']);
|
||||||
Route::delete('{transactionGroup}', ['uses' => 'TransactionController@delete', 'as' => 'delete']);
|
Route::delete('{transactionGroup}', ['uses' => 'TransactionController@delete', 'as' => 'delete']);
|
||||||
|
Loading…
Reference in New Issue
Block a user