<?php

namespace App\Exceptions;

use Exception;

class InsufficientStockException extends StockException
{
    public function __construct(
        string $productName,
        int $requested,
        int $available,
        int|string $codeOrMessage = 0,
        ?\Throwable $previous = null
    ) {
        $code = 0;
        if (is_string($codeOrMessage)) {
            $message = $codeOrMessage;
        } else {
            $code = $codeOrMessage;
            $message = "Insufficient stock for product '{$productName}'. Requested: {$requested}, Available: {$available}";
        }

        parent::__construct($message, $code, $previous, [
            'product_name' => $productName,
            'requested' => $requested,
            'available' => $available,
        ]);
    }
}
