diff --git a/app/Api/V2/Controllers/Model/Budget/ShowController.php b/app/Api/V2/Controllers/Model/Budget/ShowController.php index 4a2654b669..4ed331d1fa 100644 --- a/app/Api/V2/Controllers/Model/Budget/ShowController.php +++ b/app/Api/V2/Controllers/Model/Budget/ShowController.php @@ -28,6 +28,7 @@ use FireflyIII\Api\V2\Controllers\Controller; use FireflyIII\Api\V2\Request\Generic\DateRequest; use FireflyIII\Models\Budget; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; +use FireflyIII\Transformers\V2\BudgetTransformer; use Illuminate\Http\JsonResponse; /** @@ -50,6 +51,20 @@ class ShowController extends Controller ); } + /** + * Show a budget. + */ + public function show(Budget $budget): JsonResponse + { + $transformer = new BudgetTransformer(); + $transformer->setParameters($this->parameters); + + return response() + ->api($this->jsonApiObject('budgets', $budget, $transformer)) + ->header('Content-Type', self::CONTENT_TYPE) + ; + } + /** * 2023-10-29 removed the cerSum reference, not sure where this is used atm * so removed from api.php. Also applies to "spent" method. diff --git a/app/Api/V2/Controllers/Model/BudgetLimit/IndexController.php b/app/Api/V2/Controllers/Model/BudgetLimit/IndexController.php new file mode 100644 index 0000000000..924823a5e5 --- /dev/null +++ b/app/Api/V2/Controllers/Model/BudgetLimit/IndexController.php @@ -0,0 +1,65 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V2\Controllers\Model\BudgetLimit; + +use FireflyIII\Api\V2\Controllers\Controller; +use FireflyIII\Models\Budget; +use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface; +use FireflyIII\Transformers\V2\BudgetLimitTransformer; +use Illuminate\Http\JsonResponse; +use Illuminate\Pagination\LengthAwarePaginator; + +class IndexController extends Controller +{ + private BudgetLimitRepositoryInterface $repository; + + public function __construct() + { + parent::__construct(); + $this->middleware( + function ($request, $next) { + $this->repository = app(BudgetLimitRepositoryInterface::class); + + return $next($request); + } + ); + } + + /** + * This endpoint is documented at: + * TODO add URL + */ + public function index(Budget $budget): JsonResponse + { + $pageSize = $this->parameters->get('limit'); + $collection = $this->repository->getBudgetLimits($budget); + $total = $collection->count(); + $collection->slice($pageSize * $this->parameters->get('page'), $pageSize); + + $paginator = new LengthAwarePaginator($collection, $total, $pageSize, $this->parameters->get('page')); + $transformer = new BudgetLimitTransformer(); + + return response()->api($this->jsonApiList('budget-limits', $paginator, $transformer))->header('Content-Type', self::CONTENT_TYPE); + } +} diff --git a/app/Http/Controllers/Report/TagController.php b/app/Http/Controllers/Report/TagController.php index f58be706e8..996a5c773e 100644 --- a/app/Http/Controllers/Report/TagController.php +++ b/app/Http/Controllers/Report/TagController.php @@ -57,6 +57,7 @@ class TagController extends Controller /** * @return Factory|View + * * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function accountPerTag(Collection $accounts, Collection $tags, Carbon $start, Carbon $end)