50 lines
1.2 KiB
PHP
50 lines
1.2 KiB
PHP
<?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);
|
|
}
|
|
}
|