<?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.';
    }
}