<?php

namespace App\Branch\Service;

use App\Branch\Entity\Room;
use App\Shared\Exception\AppException;

/**
 * دلیلی که یک اتاق را غیرقابل‌حذف می‌کند.
 *
 * الان هیچ پیاده‌سازی‌ای ندارد و این عمدی است: در این فاز اتاق هیچ وابستهٔ زنده‌ای
 * ندارد. تسک ۰۲ (منبعِ فعال روی اتاق) و تسک ۰۷ (نوبت آیندهٔ آن منابع) هرکدام یک
 * پیاده‌سازی اضافه می‌کنند و RoomService دست نمی‌خورد — به‌جای زنجیرهٔ if که هر تسک
 * یک شرط به آن سنجاق کند.
 */
interface RoomDeletionGuardInterface
{
    /** @throws AppException وقتی حذف مجاز نیست */
    public function assertDeletable(Room $room): void;
}
