. */ 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\Models\TransactionCurrency; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface; use FireflyIII\User; use Illuminate\Http\JsonResponse; /** * Class CurrencyController */ class CurrencyController extends Controller { private CurrencyRepositoryInterface $repository; /** * CurrencyController constructor. */ public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { /** @var User $user */ $user = auth()->user(); $this->repository = app(CurrencyRepositoryInterface::class); $this->repository->setUser($user); return $next($request); } ); } /** * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesAC * * @param AutocompleteRequest $request * * @return JsonResponse */ public function currencies(AutocompleteRequest $request): JsonResponse { $data = $request->getData(); $collection = $this->repository->searchCurrency($data['query'], $this->parameters->get('limit')); $result = []; /** @var TransactionCurrency $currency */ foreach ($collection as $currency) { $result[] = [ 'id' => (string)$currency->id, 'name' => $currency->name, 'code' => $currency->code, 'symbol' => $currency->symbol, 'decimal_places' => $currency->decimal_places, ]; } return response()->json($result); } /** * Documentation for this endpoint is at: * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesCodeAC * * @param AutocompleteRequest $request * * @return JsonResponse * @deprecated */ public function currenciesWithCode(AutocompleteRequest $request): JsonResponse { $data = $request->getData(); $collection = $this->repository->searchCurrency($data['query'], $this->parameters->get('limit')); $result = []; /** @var TransactionCurrency $currency */ foreach ($collection as $currency) { $result[] = [ 'id' => (string)$currency->id, 'name' => sprintf('%s (%s)', $currency->name, $currency->code), 'code' => $currency->code, 'symbol' => $currency->symbol, 'decimal_places' => $currency->decimal_places, ]; } return response()->json($result); } }