mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-29 18:20:01 +00:00
Expanded API code, wrote a bunch new transformers as well.
This commit is contained in:
@@ -88,22 +88,19 @@ class AccountController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$type = $request->get('type') ?? 'all';
|
||||
$types = $this->mapTypes($type);
|
||||
$types = $this->mapTypes($this->parameters->get('type'));
|
||||
$pageSize = intval(Preferences::getForUser(auth()->user(), 'listPageSize', 50)->data);
|
||||
$page = 0 === intval($request->get('page')) ? 1 : intval($request->get('page'));
|
||||
$collection = $this->repository->getAccountsByType($types);
|
||||
$count = $collection->count();
|
||||
$accounts = $collection->slice(($page - 1) * $pageSize, $pageSize);
|
||||
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
||||
|
||||
// make paginator:
|
||||
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $page);
|
||||
|
||||
$manager = new Manager();
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page'));
|
||||
$manager = new Manager();
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
|
||||
$resource = new FractalCollection($accounts, new AccountTransformer, 'accounts');
|
||||
$resource = new FractalCollection($accounts, new AccountTransformer($this->parameters), 'accounts');
|
||||
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
@@ -119,10 +116,10 @@ class AccountController extends Controller
|
||||
{
|
||||
|
||||
$manager = new Manager();
|
||||
$manager->parseIncludes(['attachments', 'journals', 'user']);
|
||||
//$manager->parseIncludes(['attachments', 'journals', 'user']);
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
$resource = new Item($account, new AccountTransformer, 'accounts');
|
||||
$resource = new Item($account, new AccountTransformer($this->parameters), 'accounts');
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
}
|
||||
|
@@ -22,7 +22,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use FireflyIII\Api\V1\Requests\BillRequest;
|
||||
use FireflyIII\Models\Bill;
|
||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||
@@ -87,15 +86,7 @@ class BillController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$pageSize = intval(Preferences::getForUser(auth()->user(), 'listPageSize', 50)->data);
|
||||
$start = null;
|
||||
$end = null;
|
||||
if (null !== $request->get('start')) {
|
||||
$start = new Carbon($request->get('start'));
|
||||
}
|
||||
if (null !== $request->get('end')) {
|
||||
$end = new Carbon($request->get('end'));
|
||||
}
|
||||
$pageSize = intval(Preferences::getForUser(auth()->user(), 'listPageSize', 50)->data);
|
||||
$paginator = $this->repository->getPaginator($pageSize);
|
||||
/** @var Collection $bills */
|
||||
$bills = $paginator->getCollection();
|
||||
@@ -104,7 +95,7 @@ class BillController extends Controller
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
|
||||
$resource = new FractalCollection($bills, new BillTransformer($start, $end), 'bills');
|
||||
$resource = new FractalCollection($bills, new BillTransformer($this->parameters), 'bills');
|
||||
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
@@ -119,22 +110,12 @@ class BillController extends Controller
|
||||
*/
|
||||
public function show(Request $request, Bill $bill)
|
||||
{
|
||||
$start = null;
|
||||
$end = null;
|
||||
if (null !== $request->get('start')) {
|
||||
$start = new Carbon($request->get('start'));
|
||||
}
|
||||
if (null !== $request->get('end')) {
|
||||
$end = new Carbon($request->get('end'));
|
||||
}
|
||||
|
||||
|
||||
$manager = new Manager();
|
||||
$manager->parseIncludes(['attachments', 'journals', 'user']);
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
|
||||
$resource = new Item($bill, new BillTransformer($start, $end), 'bills');
|
||||
$resource = new Item($bill, new BillTransformer($this->parameters), 'bills');
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
}
|
||||
@@ -146,21 +127,12 @@ class BillController extends Controller
|
||||
*/
|
||||
public function store(BillRequest $request)
|
||||
{
|
||||
$start = null;
|
||||
$end = null;
|
||||
if (null !== $request->get('start')) {
|
||||
$start = new Carbon($request->get('start'));
|
||||
}
|
||||
if (null !== $request->get('end')) {
|
||||
$end = new Carbon($request->get('end'));
|
||||
}
|
||||
|
||||
$bill = $this->repository->store($request->getAll());
|
||||
$manager = new Manager();
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
|
||||
$resource = new Item($bill, new BillTransformer($start, $end), 'bills');
|
||||
$resource = new Item($bill, new BillTransformer($this->parameters), 'bills');
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
|
||||
@@ -175,23 +147,13 @@ class BillController extends Controller
|
||||
*/
|
||||
public function update(BillRequest $request, Bill $bill)
|
||||
{
|
||||
$data = $request->getAll();
|
||||
$bill = $this->repository->update($bill, $data);
|
||||
|
||||
$start = null;
|
||||
$end = null;
|
||||
if (null !== $request->get('start')) {
|
||||
$start = new Carbon($request->get('start'));
|
||||
}
|
||||
if (null !== $request->get('end')) {
|
||||
$end = new Carbon($request->get('end'));
|
||||
}
|
||||
|
||||
$data = $request->getAll();
|
||||
$bill = $this->repository->update($bill, $data);
|
||||
$manager = new Manager();
|
||||
$baseUrl = $request->getSchemeAndHttpHost() . '/api/v1';
|
||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||
|
||||
$resource = new Item($bill, new BillTransformer($start, $end), 'bills');
|
||||
$resource = new Item($bill, new BillTransformer($this->parameters), 'bills');
|
||||
|
||||
return Response::json($manager->createData($resource)->toArray());
|
||||
|
||||
|
@@ -22,12 +22,15 @@ declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Api\V1\Controllers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Carbon\Exceptions\InvalidDateException;
|
||||
use FireflyConfig;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||
|
||||
/**
|
||||
* Class Controller.
|
||||
@@ -36,6 +39,9 @@ class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
|
||||
/** @var ParameterBag */
|
||||
protected $parameters;
|
||||
|
||||
/**
|
||||
* Controller constructor.
|
||||
*
|
||||
@@ -50,5 +56,49 @@ class Controller extends BaseController
|
||||
if (true === $isDemoSite) {
|
||||
throw new FireflyException('The API is not available on the demo site.');
|
||||
}
|
||||
|
||||
// get global parameters
|
||||
$this->parameters = $this->getParameters();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ParameterBag
|
||||
*/
|
||||
private function getParameters(): ParameterBag
|
||||
{
|
||||
$bag = new ParameterBag;
|
||||
$page = (int)request()->get('page');
|
||||
if ($page === 0) {
|
||||
$page = 1;
|
||||
}
|
||||
$bag->set('page', $page);
|
||||
|
||||
$start = request()->get('start');
|
||||
$startDate = null;
|
||||
if (!is_null($start)) {
|
||||
try {
|
||||
$startDate = new Carbon($start);
|
||||
} catch (InvalidDateException $e) {
|
||||
// don't care
|
||||
}
|
||||
}
|
||||
$bag->set('start', $startDate);
|
||||
|
||||
$end = request()->get('end');
|
||||
$endDate = null;
|
||||
if (!is_null($end)) {
|
||||
try {
|
||||
$endDate = new Carbon($end);
|
||||
} catch (InvalidDateException $e) {
|
||||
// don't care
|
||||
}
|
||||
}
|
||||
$bag->set('end', $endDate);
|
||||
|
||||
$type = request()->get('type') ?? 'all';
|
||||
$bag->set('type', $type);
|
||||
|
||||
return $bag;
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user