. */ declare(strict_types=1); namespace FireflyIII\Api\V1\Controllers\Autocomplete; use FireflyIII\Api\V1\Controllers\Controller; use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Budget; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use Illuminate\Http\JsonResponse; /** * Class BudgetController */ class BudgetController extends Controller { private BudgetRepositoryInterface $repository; protected array $acceptedRoles = [UserRoleEnum::READ_BUDGETS]; /** * BudgetController constructor. */ public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { $this->validateUserGroup($request); $this->repository = app(BudgetRepositoryInterface::class); $this->repository->setUser($this->user); $this->repository->setUserGroup($this->userGroup); return $next($request); } ); } /** * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBudgetsAC */ public function budgets(AutocompleteRequest $request): JsonResponse { $data = $request->getData(); $result = $this->repository->searchBudget($data['query'], $this->parameters->get('limit')); $filtered = $result->map( static fn (Budget $item) => [ 'id' => (string) $item->id, 'name' => $item->name, 'active' => $item->active, ] ); return response()->api($filtered->toArray()); } }