"""
CLM Domain Exceptions.

خطاهای دامنه ماژول قراردادها.
"""
from shared.exceptions.business import BusinessException


class ContractNotFoundError(Exception):
    """قرارداد یافت نشد."""
    pass


class ContractValidationError(BusinessException):
    """خطای اعتبارسنجی قرارداد."""
    pass


class InvalidContractStateTransition(BusinessException):
    """تغییر وضعیت غیرمجاز قرارداد."""
    def __init__(self, current_status: str, target_status: str):
        super().__init__(
            f"تغییر وضعیت از {current_status} به {target_status} مجاز نیست"
        )
        self.current_status = current_status
        self.target_status = target_status


class DuplicateContractNumberError(BusinessException):
    """شماره قرارداد تکراری."""
    def __init__(self, contract_number: str):
        super().__init__(f"شماره قرارداد {contract_number} قبلاً استفاده شده")


class ContractExpiredError(BusinessException):
    """قرارداد منقضی شده."""
    pass


class MaxRenewalsExceededError(BusinessException):
    """تعداد تمدید به حداکثر رسیده."""
    pass


class AmendmentNotAllowedError(BusinessException):
    """ایجاد الحاقیه مجاز نیست."""
    pass


class MilestoneCompletionError(BusinessException):
    """خطا در تکمیل مرحله."""
    pass
