ldc-boutique-cnc-sable/app/Actions/Common/ExecuteMassActionInput.php

32 lines
854 B
PHP

<?php
declare(strict_types=1);
namespace App\Actions\Common;
use App\Contracts\ActionInput;
use App\Enums\MassActionType;
use Illuminate\Database\Eloquent\Model;
use Webmozart\Assert\Assert;
final readonly class ExecuteMassActionInput implements ActionInput
{
/**
* @param class-string<Model> $modelClass
* @param array<int|string> $modelKeyList
*/
public function __construct(
public string $modelClass,
public MassActionType $action,
public array $modelKeyList,
) {
Assert::classExists($this->modelClass);
Assert::isAOf($this->modelClass, Model::class);
Assert::notEmpty($this->modelKeyList);
Assert::allScalar($this->modelKeyList);
foreach ($this->modelKeyList as $modelKey) {
Assert::stringNotEmpty((string) $modelKey);
}
}
}