*/ final class CreateShop implements Action { /** * @param \App\Actions\Shops\CreateShopInput $input */ #[\Override] public function __invoke(ActionInput $input): Shop { Assert::isInstanceOf($input, CreateShopInput::class); $attributes = [ 'name' => $input->name, 'address' => $input->address, 'postcode' => $input->postcode, 'city' => $input->city, 'phone' => $input->phone?->value, 'latitude' => $input->coordinates !== null ? (string) $input->coordinates->latitude : null, 'longitude' => $input->coordinates !== null ? (string) $input->coordinates->longitude : null, ]; $shop = new Shop(); $shop->fill($attributes); $shop->default = $input->default; $shop->saveOrFail(); return $shop; } }