<?php

namespace App\Form\Actions;

use App\Form\Models\Participant;
use App\Lib\JobMiddleware\JobChannels;
use App\Lib\JobMiddleware\WithJobState;
use App\Lib\Queue\TracksJob;
use Lorisleiva\Actions\Concerns\AsAction;

class ParticipantDestroyAction
{
    use AsAction;
    use TracksJob;

    public function handle(int $participantId): void
    {
        Participant::findOrFail($participantId)->delete();
    }

    public function asController(Participant $participant): void
    {
        $this->startJob($participant->id);
    }

    /**
     * @param mixed $parameters
     */
    public function jobState(WithJobState $jobState, ...$parameters): WithJobState
    {
        return $jobState
            ->after('Teilnehmer gelöscht.')
            ->failed('Löschen von Teilnehmer fehlgeschlagen.')
            ->shouldReload(JobChannels::make()->add('participant'));
    }
}