diff --git a/app/Http/Controllers/Api/EmojiAliasController.php b/app/Http/Controllers/Api/EmojiAliasController.php index 803f88645..b7237c8d6 100644 --- a/app/Http/Controllers/Api/EmojiAliasController.php +++ b/app/Http/Controllers/Api/EmojiAliasController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; +use App\Http\Requests\Emoji\IndexEmojiAliasRequest; use App\Http\Requests\Emoji\SearchEmojiAliasRequest; use App\Http\Requests\Emoji\StoreEmojiAliasRequest; use App\Http\Requests\Emoji\UpdateEmojiAliasRequest; @@ -15,7 +16,7 @@ class EmojiAliasController extends Controller /** * Display a listing of the resource. */ - public function index(Request $request) + public function index(IndexEmojiAliasRequest $request) { $aliases = EmojiAlias::query() ->when($request->get('emoji_id'), function ($query, $emojiId) { diff --git a/app/Http/Controllers/Api/EmojiController.php b/app/Http/Controllers/Api/EmojiController.php index a3c07f3d5..9357208f2 100644 --- a/app/Http/Controllers/Api/EmojiController.php +++ b/app/Http/Controllers/Api/EmojiController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; +use App\Http\Requests\Emoji\IndexEmojiRequest; use App\Http\Requests\Emoji\SearchEmojiRequest; use App\Http\Requests\Emoji\StoreEmojiRequest; use App\Http\Requests\Emoji\UpdateEmojiRequest; @@ -15,7 +16,7 @@ class EmojiController extends Controller /** * Display a listing of the resource. */ - public function index(Request $request) + public function index(IndexEmojiRequest $request) { $emojis = Emoji::query() ->when($request->get('category_id'), function ($query, $categoryId) { diff --git a/app/Http/Requests/Emoji/IndexEmojiAliasRequest.php b/app/Http/Requests/Emoji/IndexEmojiAliasRequest.php new file mode 100644 index 000000000..c529a7cd1 --- /dev/null +++ b/app/Http/Requests/Emoji/IndexEmojiAliasRequest.php @@ -0,0 +1,44 @@ +|string> + */ + public function rules(): array + { + return [ + 'emoji_id' => 'sometimes|integer|exists:emojis,id', + 'search' => 'sometimes|string|max:255', + 'per_page' => 'sometimes|integer|min:1|max:100', + 'with_emoji' => 'sometimes|boolean', + ]; + } + + /** + * Prepare the data for validation. + */ + protected function prepareForValidation(): void + { + // Convert string boolean values to actual booleans + if ($this->has('with_emoji')) { + $this->merge([ + 'with_emoji' => filter_var($this->with_emoji, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE), + ]); + } + } +} diff --git a/app/Http/Requests/Emoji/IndexEmojiRequest.php b/app/Http/Requests/Emoji/IndexEmojiRequest.php new file mode 100644 index 000000000..6a0739221 --- /dev/null +++ b/app/Http/Requests/Emoji/IndexEmojiRequest.php @@ -0,0 +1,49 @@ +|string> + */ + public function rules(): array + { + return [ + 'category_id' => 'sometimes|integer|exists:emoji_categories,id', + 'search' => 'sometimes|string|max:255', + 'per_page' => 'sometimes|integer|min:1|max:100', + 'with_category' => 'sometimes|boolean', + 'with_aliases' => 'sometimes|boolean', + ]; + } + + /** + * Prepare the data for validation. + */ + protected function prepareForValidation(): void + { + // Convert string boolean values to actual booleans + $booleanFields = ['with_category', 'with_aliases']; + + foreach ($booleanFields as $field) { + if ($this->has($field)) { + $this->merge([ + $field => filter_var($this->get($field), FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE), + ]); + } + } + } +}