*/ final readonly class SettingDto implements Arrayable, UrlRoutable { /** * @param array $employeeSites */ public function __construct( public int $id, public array $employeeSites = [], ) { } public static function fromModel(Setting $setting): self { return new self( id: $setting->id, employeeSites: $setting->employee_sites ?? [], ); } public function employeeSitesAsString(): string { return implode(', ', $this->employeeSites); } /** * @return array */ public function getShopperSiteCodes(): array { return array_map( static fn (string $site): ShopperSiteCode => new ShopperSiteCode($site), $this->employeeSites ); } #[\Override] public function getRouteKey(): mixed { return $this->id; } #[\Override] public function getRouteKeyName(): string { return 'setting'; } #[\Override] public function resolveRouteBinding($value, $field = null): mixed { return null; } #[\Override] public function resolveChildRouteBinding($childType, $value, $field): mixed { return null; } /** * @return array{id: int, employee_sites: array} */ #[\Override] public function toArray(): array { return [ 'id' => $this->id, 'employee_sites' => $this->employeeSites, ]; } }