adrema/app/Initialize/Actions/NamiGetSearchLayerAction.php

50 lines
1.2 KiB
PHP
Raw Permalink Normal View History

2023-05-18 01:13:28 +02:00
<?php
namespace App\Initialize\Actions;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Collection;
use Lorisleiva\Actions\ActionRequest;
use Lorisleiva\Actions\Concerns\AsAction;
use Zoomyboy\LaravelNami\Data\SearchLayerOption;
use Zoomyboy\LaravelNami\Enum\SearchLayer;
use Zoomyboy\LaravelNami\Nami;
class NamiGetSearchLayerAction
{
use AsAction;
/**
* @param array<string, mixed> $input
*
* @return Collection<int, SearchLayerOption>
*/
public function handle(array $input): Collection
{
return Nami::login((int) $input['mglnr'], $input['password'])->searchLayerOptions(
SearchLayer::from($input['layer'] ?: 0),
$input['parent'] ?: null
);
}
/**
* @return array<string, string>
*/
public function rules(): array
{
return [
'mglnr' => 'required|numeric|min:0',
'password' => 'required|string',
'parent' => 'present',
'layer' => 'required|numeric',
];
}
public function asController(ActionRequest $request): JsonResponse
{
$response = $this->handle($request->validated());
return response()->json($response);
}
}