2023-05-07 21:15:17 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Initialize\Actions;
|
|
|
|
|
2023-05-08 15:11:16 +02:00
|
|
|
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
|
2023-05-07 21:15:17 +02:00
|
|
|
use Lorisleiva\Actions\ActionRequest;
|
|
|
|
use Lorisleiva\Actions\Concerns\AsAction;
|
|
|
|
use Zoomyboy\LaravelNami\Api;
|
2023-05-08 15:11:16 +02:00
|
|
|
use Zoomyboy\LaravelNami\Data\MemberEntry;
|
2023-05-07 21:15:17 +02:00
|
|
|
use Zoomyboy\LaravelNami\Nami;
|
|
|
|
|
|
|
|
class NamiSearchAction
|
|
|
|
{
|
|
|
|
use AsAction;
|
|
|
|
|
2023-05-08 15:11:16 +02:00
|
|
|
/**
|
|
|
|
* @param array<string, mixed> $params
|
|
|
|
*
|
|
|
|
* @return LengthAwarePaginator<MemberEntry>
|
|
|
|
*/
|
2024-02-22 00:40:19 +01:00
|
|
|
public function handle(Api $api, int $page, array $params, int $perPage = 10): LengthAwarePaginator
|
2023-05-07 21:15:17 +02:00
|
|
|
{
|
2024-02-22 00:40:19 +01:00
|
|
|
return $api->pageSearch($params, $page, $perPage);
|
2023-05-07 21:15:17 +02:00
|
|
|
}
|
|
|
|
|
2023-05-08 15:11:16 +02:00
|
|
|
/**
|
|
|
|
* @return array<string, string>
|
|
|
|
*/
|
2023-05-07 21:15:17 +02:00
|
|
|
public function rules(): array
|
|
|
|
{
|
|
|
|
return [
|
|
|
|
'mglnr' => 'required|numeric|min:0',
|
|
|
|
'password' => 'required|string',
|
|
|
|
'params' => 'array',
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
2023-05-08 15:11:16 +02:00
|
|
|
/**
|
|
|
|
* @return LengthAwarePaginator<MemberEntry>
|
|
|
|
*/
|
|
|
|
public function asController(ActionRequest $request): LengthAwarePaginator
|
2023-05-07 21:15:17 +02:00
|
|
|
{
|
|
|
|
$api = Nami::login($request->input('mglnr'), $request->input('password'));
|
|
|
|
|
2023-05-08 15:11:16 +02:00
|
|
|
return $this->handle($api, $request->input('page', 1), $request->input('params'));
|
2023-05-07 21:15:17 +02:00
|
|
|
}
|
|
|
|
}
|