<?php declare (strict_types = 1); namespace App\Rules; use App\Models\Product; use Illuminate\Contracts\Validation\Rule; class isSKUAvailable implements Rule { public ?int $retailer_id; public ?int $id; public ?bool $isUpdating; public function __construct(?int $retailer_id, ?bool $isUpdating, ?int $id) { $this->retailer_id = $retailer_id; $this->id = $id; $this->isUpdating = $isUpdating; } public function passes($attribute, $value) { if($this->isUpdating) { $product = Product::where('sku', $value)->where('id', '!=', $this->id)->where('retailer_id', $this->retailer_id)->first(); return (!$product) ? true : false; } $product = Product::where('sku', $value)->where('retailer_id', $this->retailer_id)->first(); return (!$product) ? true : false; } public function message() { return 'This sku is already in use.'; } }