. */ namespace FireflyIII\Api\V2\Controllers\Transaction\List; use FireflyIII\Api\V2\Controllers\Controller; use FireflyIII\Api\V2\Request\Transaction\ListRequest; use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Transformers\V2\TransactionGroupTransformer; use Illuminate\Http\JsonResponse; /** * Class TransactionController */ class TransactionController extends Controller { /** * @param ListRequest $request * * @return JsonResponse */ public function list(ListRequest $request): JsonResponse { // collect transactions: $limit = $request->getLimit(); $page = $request->getPage(); $page = max($page, 1); if ($limit > 0 && $limit <= $this->pageSize) { $this->pageSize = $limit; } /** @var GroupCollectorInterface $collector */ $collector = app(GroupCollectorInterface::class); $collector->setUserGroup(auth()->user()->userGroup) ->withAPIInformation() ->setLimit($this->pageSize) ->setPage($page) ->setTypes($request->getTransactionTypes()); $start = $request->getStartDate(); $end = $request->getEndDate(); if (null !== $start) { $collector->setStart($start); } if (null !== $end) { $collector->setEnd($start); } $paginator = $collector->getPaginatedGroups(); $paginator->setPath( sprintf( '%s?%s', route('api.v2.transactions.list'), $request->buildParams() ) ); return response() ->json($this->jsonApiList('transactions', $paginator, new TransactionGroupTransformer())) ->header('Content-Type', self::CONTENT_TYPE); } }