mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	Merge branch 'develop' into adminlte4
This commit is contained in:
		| @@ -148,7 +148,7 @@ class Controller extends BaseController | ||||
|         $objects = $paginator->getCollection(); | ||||
| 
 | ||||
|         // the transformer, at this point, needs to collect information that ALL items in the collection
 | ||||
|         // require, like meta data and stuff like that, and save it for later.
 | ||||
|         // require, like meta-data and stuff like that, and save it for later.
 | ||||
|         $transformer->collectMetaData($objects); | ||||
| 
 | ||||
|         $resource = new FractalCollection($objects, $transformer, $key); | ||||
|   | ||||
| @@ -49,19 +49,17 @@ class AccountController extends Controller | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function listTransactions(ListRequest $request, Account $account): JsonResponse | ||||
|     public function list(ListRequest $request, Account $account): JsonResponse | ||||
|     { | ||||
|         // collect transactions:
 | ||||
|         $type  = $request->get('type') ?? 'default'; | ||||
|         $limit = (int)$request->get('limit'); | ||||
|         $page  = (int)$request->get('page'); | ||||
|         $limit = $request->getLimit(); | ||||
|         $page  = $request->getPage(); | ||||
|         $page  = max($page, 1); | ||||
| 
 | ||||
|         if ($limit > 0 && $limit <= $this->pageSize) { | ||||
|             $this->pageSize = $limit; | ||||
|         } | ||||
| 
 | ||||
|         $types = $this->mapTransactionTypes($type); | ||||
| 
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
| @@ -69,15 +67,23 @@ class AccountController extends Controller | ||||
|                   ->withAPIInformation() | ||||
|                   ->setLimit($this->pageSize) | ||||
|                   ->setPage($page) | ||||
|                   ->setTypes($types); | ||||
|                   ->setTypes($request->getTransactionTypes()); | ||||
| 
 | ||||
|         // TODO date filter
 | ||||
|         //if (null !== $this->parameters->get('start') && null !== $this->parameters->get('end')) {
 | ||||
|         //    $collector->setRange($this->parameters->get('start'), $this->parameters->get('end'));
 | ||||
|         //}
 | ||||
|         $start = $request->getStartDate(); | ||||
|         $end   = $request->getEndDate(); | ||||
|         if (null !== $start) { | ||||
|             $collector->setStart($start); | ||||
|         } | ||||
|         if (null !== $end) { | ||||
|             $collector->setEnd($start); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v2.accounts.transactions', [$account->id])); // TODO  . $this->buildParams()
 | ||||
|         $paginator->setPath( | ||||
|             sprintf('%s?%s', | ||||
|                     route('api.v2.accounts.transactions', [$account->id]), | ||||
|                     $request->buildParams()) | ||||
|         ); | ||||
| 
 | ||||
|         return response() | ||||
|             ->json($this->jsonApiList('transactions', $paginator, new TransactionGroupTransformer())) | ||||
|   | ||||
| @@ -0,0 +1,83 @@ | ||||
| <?php | ||||
| /* | ||||
|  * TransactionController.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/>. | ||||
|  */ | ||||
| 
 | ||||
| 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); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @@ -24,15 +24,84 @@ declare(strict_types=1); | ||||
| 
 | ||||
| namespace FireflyIII\Api\V2\Request\Transaction; | ||||
| 
 | ||||
| use Carbon\Carbon; | ||||
| use FireflyIII\Support\Http\Api\TransactionFilter; | ||||
| use FireflyIII\Support\Request\ChecksLogin; | ||||
| use FireflyIII\Support\Request\ConvertsDataTypes; | ||||
| use Illuminate\Foundation\Http\FormRequest; | ||||
| 
 | ||||
| /** | ||||
|  * Class ListRequest | ||||
|  * Used specifically to list transactions. | ||||
|  */ | ||||
| class ListRequest extends FormRequest | ||||
| { | ||||
|     use ChecksLogin; | ||||
|     use ConvertsDataTypes; | ||||
|     use TransactionFilter; | ||||
| 
 | ||||
|     /** | ||||
|      * @return string | ||||
|      */ | ||||
|     public function buildParams(): string | ||||
|     { | ||||
|         $array = [ | ||||
|             'page' => $this->getPage(), | ||||
|         ]; | ||||
| 
 | ||||
|         $start = $this->getStartDate(); | ||||
|         $end   = $this->getEndDate(); | ||||
|         if (null !== $start && null !== $end) { | ||||
|             $array['start'] = $start->format('Y-m-d'); | ||||
|             $array['end']   = $end->format('Y-m-d'); | ||||
|         } | ||||
|         if (0 !== $this->getLimit()) { | ||||
|             $array['limit'] = $this->getLimit(); | ||||
|         } | ||||
|         return http_build_query($array); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return int | ||||
|      */ | ||||
|     public function getPage(): int | ||||
|     { | ||||
|         $page = $this->convertInteger('page'); | ||||
|         return 0 === $page || $page > 65536 ? 1 : $page; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return Carbon|null | ||||
|      */ | ||||
|     public function getStartDate(): ?Carbon | ||||
|     { | ||||
|         return $this->getCarbonDate('start'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return Carbon|null | ||||
|      */ | ||||
|     public function getEndDate(): ?Carbon | ||||
|     { | ||||
|         return $this->getCarbonDate('end'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return int | ||||
|      */ | ||||
|     public function getLimit(): int | ||||
|     { | ||||
|         return $this->convertInteger('limit'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array | ||||
|      */ | ||||
|     public function getTransactionTypes(): array | ||||
|     { | ||||
|         $type = (string)$this->get('type', 'default'); | ||||
|         return $this->mapTransactionTypes($type); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array | ||||
|   | ||||
		Reference in New Issue
	
	Block a user