<?php

namespace Easymailing\App\Core\Provider\Woocommerce\Exception;

class ProductOrVariantNotFoundException extends \Exception
{
	private $orderId;
    private $productId;
    private $variantId;

    /**
     * Constructor de la excepción personalizada.
     *
     * @param int $orderId ID del pedido asociado al error.
     * @param int|null $productId ID del producto que no existe.
     * @param int|null $variantId ID de la variante que no existe (si aplica).
     * @param string $message Mensaje de error detallado.
     * @param int $code Código de error (opcional).
     * @param \Throwable|null $previous Excepción previa (opcional).
     */
    public function __construct(
	int $orderId,
	?int $productId,
	?int $variantId,
	string $message = "Product or variant not found in WooCommerce",
	int $code = 0,
	\Throwable $previous = null
) {
	$this->orderId = $orderId;
	$this->productId = $productId;
	$this->variantId = $variantId;
	parent::__construct($message, $code, $previous);
}

    /**
     * Devuelve el ID del pedido asociado al error.
     *
     * @return int
     */
    public function getOrderId(): int
{
	return $this->orderId;
}

    /**
     * Devuelve el ID del producto asociado al error (si aplica).
     *
     * @return int|null
     */
    public function getProductId(): ?int
{
	return $this->productId;
}

    /**
     * Devuelve el ID de la variante asociada al error (si aplica).
     *
     * @return int|null
     */
    public function getVariantId(): ?int
{
	return $this->variantId;
}
}
