mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
Refactor currency API
This commit is contained in:
parent
0133a7c5db
commit
83d64262c8
@ -31,6 +31,8 @@ use Illuminate\Http\JsonResponse;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Show = show a single account.
|
||||||
|
* Index = show all accounts
|
||||||
* Class ShowController
|
* Class ShowController
|
||||||
*/
|
*/
|
||||||
class ShowController extends Controller
|
class ShowController extends Controller
|
||||||
|
87
app/Api/V2/Controllers/Model/Bill/IndexController.php
Normal file
87
app/Api/V2/Controllers/Model/Bill/IndexController.php
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ShowController.php
|
||||||
|
* Copyright (c) 2023 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V2\Controllers\Model\Bill;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
|
use FireflyIII\Models\Bill;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Bill\BillRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
|
use FireflyIII\Transformers\V2\BillTransformer;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ShowController
|
||||||
|
*/
|
||||||
|
class IndexController extends Controller
|
||||||
|
{
|
||||||
|
use ValidatesUserGroupTrait;
|
||||||
|
|
||||||
|
private BillRepositoryInterface $repository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->middleware(
|
||||||
|
function ($request, $next) {
|
||||||
|
$this->repository = app(BillRepositoryInterface::class);
|
||||||
|
|
||||||
|
// new way of user group validation
|
||||||
|
$userGroup = $this->validateUserGroup($request);
|
||||||
|
if (null !== $userGroup) {
|
||||||
|
$this->repository->setUserGroup($userGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Request $request
|
||||||
|
*
|
||||||
|
* TODO see autocomplete/accountcontroller for list.
|
||||||
|
*
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function index(Request $request): JsonResponse
|
||||||
|
{
|
||||||
|
$this->repository->correctOrder();
|
||||||
|
$bills = $this->repository->getBills();
|
||||||
|
$pageSize = $this->parameters->get('limit');
|
||||||
|
$count = $bills->count();
|
||||||
|
$bills = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
||||||
|
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
|
||||||
|
$transformer = new BillTransformer();
|
||||||
|
$transformer->setParameters($this->parameters); // give params to transformer
|
||||||
|
|
||||||
|
return response()
|
||||||
|
->json($this->jsonApiList('subscriptions', $paginator, $transformer))
|
||||||
|
->header('Content-Type', self::CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V2\Controllers\Model\Bill;
|
namespace FireflyIII\Api\V2\Controllers\Model\Bill;
|
||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Repositories\UserGroups\Bill\BillRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\Bill\BillRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
@ -61,29 +62,6 @@ class ShowController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param Request $request
|
|
||||||
*
|
|
||||||
* TODO see autocomplete/accountcontroller for list.
|
|
||||||
*
|
|
||||||
* @return JsonResponse
|
|
||||||
*/
|
|
||||||
public function index(Request $request): JsonResponse
|
|
||||||
{
|
|
||||||
$this->repository->correctOrder();
|
|
||||||
$bills = $this->repository->getBills();
|
|
||||||
$pageSize = $this->parameters->get('limit');
|
|
||||||
$count = $bills->count();
|
|
||||||
$bills = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
|
||||||
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
|
|
||||||
$transformer = new BillTransformer();
|
|
||||||
$transformer->setParameters($this->parameters); // give params to transformer
|
|
||||||
|
|
||||||
return response()
|
|
||||||
->json($this->jsonApiList('subscriptions', $paginator, $transformer))
|
|
||||||
->header('Content-Type', self::CONTENT_TYPE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO this endpoint is not documented
|
* TODO this endpoint is not documented
|
||||||
*/
|
*/
|
||||||
|
@ -25,6 +25,7 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V2\Controllers\Model\Budget;
|
namespace FireflyIII\Api\V2\Controllers\Model\Budget;
|
||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use FireflyIII\Transformers\V2\BudgetTransformer;
|
use FireflyIII\Transformers\V2\BudgetTransformer;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@ -61,7 +62,7 @@ class ListController extends Controller
|
|||||||
public function index(Request $request): JsonResponse
|
public function index(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
echo 'this needs move to Administration';
|
echo 'this needs move to Administration';
|
||||||
exit;
|
throw new FireflyException('Needs migration to IndexController');
|
||||||
$collection = $this->repository->getActiveBudgets();
|
$collection = $this->repository->getActiveBudgets();
|
||||||
$total = $collection->count();
|
$total = $collection->count();
|
||||||
$collection->slice($this->pageXSize * $this->parameters->get('page'), $this->pXageSize);
|
$collection->slice($this->pageXSize * $this->parameters->get('page'), $this->pXageSize);
|
||||||
|
@ -27,6 +27,7 @@ namespace FireflyIII\Api\V2\Controllers\Model\Budget;
|
|||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\ConvertsExchangeRates;
|
use FireflyIII\Support\Http\Api\ConvertsExchangeRates;
|
||||||
@ -64,6 +65,7 @@ class ShowController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function budgeted(DateRequest $request, Budget $budget): JsonResponse
|
public function budgeted(DateRequest $request, Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
|
throw new FireflyException('Needs refactoring, uses deprecated method.');
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$result = $this->repository->budgetedInPeriodForBudget($budget, $data['start'], $data['end']);
|
$result = $this->repository->budgetedInPeriodForBudget($budget, $data['start'], $data['end']);
|
||||||
$converted = $this->cerSum(array_values($result));
|
$converted = $this->cerSum(array_values($result));
|
||||||
@ -78,6 +80,7 @@ class ShowController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function spent(DateRequest $request, Budget $budget): JsonResponse
|
public function spent(DateRequest $request, Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
|
throw new FireflyException('Needs refactoring, uses deprecated method.');
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$result = $this->repository->spentInPeriodForBudget($budget, $data['start'], $data['end']);
|
$result = $this->repository->spentInPeriodForBudget($budget, $data['start'], $data['end']);
|
||||||
$converted = $this->cerSum(array_values($result));
|
$converted = $this->cerSum(array_values($result));
|
||||||
|
@ -26,6 +26,7 @@ namespace FireflyIII\Api\V2\Controllers\Model\Budget;
|
|||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\ConvertsExchangeRates;
|
use FireflyIII\Support\Http\Api\ConvertsExchangeRates;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@ -64,6 +65,7 @@ class SumController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function budgeted(DateRequest $request): JsonResponse
|
public function budgeted(DateRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
throw new FireflyException('Needs refactoring, uses deprecated method.');
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$result = $this->repository->budgetedInPeriod($data['start'], $data['end']);
|
$result = $this->repository->budgetedInPeriod($data['start'], $data['end']);
|
||||||
$converted = $this->cerSum(array_values($result));
|
$converted = $this->cerSum(array_values($result));
|
||||||
@ -81,6 +83,7 @@ class SumController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function spent(DateRequest $request): JsonResponse
|
public function spent(DateRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
throw new FireflyException('Needs refactoring, uses deprecated method.');
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$result = $this->repository->spentInPeriod($data['start'], $data['end']);
|
$result = $this->repository->spentInPeriod($data['start'], $data['end']);
|
||||||
$converted = $this->cerSum(array_values($result));
|
$converted = $this->cerSum(array_values($result));
|
||||||
|
@ -26,6 +26,7 @@ namespace FireflyIII\Api\V2\Controllers\Model\BudgetLimit;
|
|||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
use FireflyIII\Api\V2\Request\Generic\DateRequest;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
use FireflyIII\Transformers\V2\BudgetLimitTransformer;
|
use FireflyIII\Transformers\V2\BudgetLimitTransformer;
|
||||||
@ -57,6 +58,7 @@ class ListController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function index(DateRequest $request, Budget $budget): JsonResponse
|
public function index(DateRequest $request, Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
|
throw new FireflyException('Needs refactoring, move to IndexController.');
|
||||||
$pageSize = $this->parameters->get('limit');
|
$pageSize = $this->parameters->get('limit');
|
||||||
$dates = $request->getAll();
|
$dates = $request->getAll();
|
||||||
$collection = $this->repository->getBudgetLimits($budget, $dates['start'], $dates['end']);
|
$collection = $this->repository->getBudgetLimits($budget, $dates['start'], $dates['end']);
|
||||||
@ -67,7 +69,7 @@ class ListController extends Controller
|
|||||||
$transformer = new BudgetLimitTransformer();
|
$transformer = new BudgetLimitTransformer();
|
||||||
|
|
||||||
return response()
|
return response()
|
||||||
->api($this->jsonApiList('budget_limits', $paginator, $transformer))
|
->api($this->jsonApiList('budget-limits', $paginator, $transformer))
|
||||||
->header('Content-Type', self::CONTENT_TYPE);
|
->header('Content-Type', self::CONTENT_TYPE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
53
app/Api/V2/Controllers/Model/Currency/IndexController.php
Normal file
53
app/Api/V2/Controllers/Model/Currency/IndexController.php
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V2\Controllers\Model\Currency;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
|
||||||
|
use FireflyIII\Transformers\V2\CurrencyTransformer;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Pagination\LengthAwarePaginator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class IndexController
|
||||||
|
*/
|
||||||
|
class IndexController extends Controller
|
||||||
|
{
|
||||||
|
private CurrencyRepositoryInterface $repository;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
$this->middleware(
|
||||||
|
function ($request, $next) {
|
||||||
|
$this->repository = app(CurrencyRepositoryInterface::class);
|
||||||
|
|
||||||
|
return $next($request);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO This endpoint is not yet documented.
|
||||||
|
*
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*
|
||||||
|
* @return JsonResponse
|
||||||
|
*/
|
||||||
|
public function index(): JsonResponse
|
||||||
|
{
|
||||||
|
$bills = $this->repository->getAll();
|
||||||
|
$pageSize = $this->parameters->get('limit');
|
||||||
|
$count = $bills->count();
|
||||||
|
$bills = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
||||||
|
$paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page'));
|
||||||
|
$transformer = new CurrencyTransformer();
|
||||||
|
$transformer->setParameters($this->parameters); // give params to transformer
|
||||||
|
|
||||||
|
return response()
|
||||||
|
->json($this->jsonApiList('currencies', $paginator, $transformer))
|
||||||
|
->header('Content-Type', self::CONTENT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -26,6 +26,7 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V2\Controllers\Model\PiggyBank;
|
namespace FireflyIII\Api\V2\Controllers\Model\PiggyBank;
|
||||||
|
|
||||||
use FireflyIII\Api\V2\Controllers\Controller;
|
use FireflyIII\Api\V2\Controllers\Controller;
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\UserGroups\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Transformers\V2\PiggyBankTransformer;
|
use FireflyIII\Transformers\V2\PiggyBankTransformer;
|
||||||
@ -36,7 +37,7 @@ use Illuminate\Pagination\LengthAwarePaginator;
|
|||||||
/**
|
/**
|
||||||
* Class ShowController
|
* Class ShowController
|
||||||
*/
|
*/
|
||||||
class ShowController extends Controller
|
class IndexController extends Controller
|
||||||
{
|
{
|
||||||
use ValidatesUserGroupTrait;
|
use ValidatesUserGroupTrait;
|
||||||
|
|
@ -109,6 +109,7 @@ class TransactionCurrency extends Model
|
|||||||
$currencyId = (int)$value;
|
$currencyId = (int)$value;
|
||||||
$currency = self::find($currencyId);
|
$currency = self::find($currencyId);
|
||||||
if (null !== $currency) {
|
if (null !== $currency) {
|
||||||
|
$currency->refreshForUser(auth()->user());
|
||||||
return $currency;
|
return $currency;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
69
app/Transformers/V2/CurrencyTransformer.php
Normal file
69
app/Transformers/V2/CurrencyTransformer.php
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* CurrencyTransformer.php
|
||||||
|
* Copyright (c) 2019 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Transformers\V2;
|
||||||
|
|
||||||
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class CurrencyTransformer
|
||||||
|
*/
|
||||||
|
class CurrencyTransformer extends AbstractTransformer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function collectMetaData(Collection $objects): void
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform the currency.
|
||||||
|
*
|
||||||
|
* @param TransactionCurrency $currency
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function transform(TransactionCurrency $currency): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => (int)$currency->id,
|
||||||
|
'created_at' => $currency->created_at->toAtomString(),
|
||||||
|
'updated_at' => $currency->updated_at->toAtomString(),
|
||||||
|
'default' => $currency->userDefault,
|
||||||
|
'enabled' => $currency->userEnabled,
|
||||||
|
'name' => $currency->name,
|
||||||
|
'code' => $currency->code,
|
||||||
|
'symbol' => $currency->symbol,
|
||||||
|
'decimal_places' => (int)$currency->decimal_places,
|
||||||
|
'links' => [
|
||||||
|
[
|
||||||
|
'rel' => 'self',
|
||||||
|
'uri' => '/currencies/' . $currency->id,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user