<?php

namespace App\Member\Actions;

use App\Member\Member;
use App\Nami\Api\FullMemberAction;
use App\Setting\NamiSettings;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Response;
use Lorisleiva\Actions\ActionRequest;
use Lorisleiva\Actions\Concerns\AsAction;

class MemberResyncAction
{
    use AsAction;

    public function handle(Member $member, NamiSettings $settings): void
    {
        $api = $settings->login();

        if (!$member->hasNami || !$member->group->hasNami) {
            return;
        }

        $fullMember = FullMemberAction::run($api, $member->group->nami_id, $member->nami_id);

        InsertFullMemberAction::dispatch($fullMember);
    }

    public function asController(ActionRequest $request, Member $member): RedirectResponse|Response
    {
        $this->handle(
            $member,
            app(NamiSettings::class),
        );

        return redirect()->back();
    }
}