. */ 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\Recurrence; use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use Illuminate\Http\JsonResponse; /** * Class RecurrenceController */ class RecurrenceController extends Controller { private RecurringRepositoryInterface $repository; protected array $acceptedRoles = [UserRoleEnum::READ_RECURRING]; /** * RecurrenceController constructor. */ public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { $this->validateUserGroup($request); $this->repository = app(RecurringRepositoryInterface::class); $this->repository->setUser($this->user); $this->repository->setUserGroup($this->userGroup); return $next($request); } ); } public function recurring(AutocompleteRequest $request): JsonResponse { $data = $request->getData(); $recurrences = $this->repository->searchRecurrence($data['query'], $this->parameters->get('limit')); $response = []; /** @var Recurrence $recurrence */ foreach ($recurrences as $recurrence) { $response[] = [ 'id' => (string) $recurrence->id, 'name' => $recurrence->title, 'description' => $recurrence->description, 'active' => $recurrence->active, ]; } return response()->api($response); } }