"""
PPM Domain — Value Objects

Value objects ماژول مدیریت پرتفولیو و برنامه.
"""

from enum import Enum


# ─── Portfolio ───────────────────────────────────────────────

class PortfolioStatus(str, Enum):
    """وضعیت پرتفولیو."""
    DRAFT = "draft"
    ACTIVE = "active"
    ON_HOLD = "on_hold"
    CLOSED = "closed"
    ARCHIVED = "archived"


class ReviewCycle(str, Enum):
    """دوره بازبینی."""
    MONTHLY = "monthly"
    QUARTERLY = "quarterly"
    SEMI_ANNUAL = "semi_annual"
    YEARLY = "yearly"


class RiskTolerance(str, Enum):
    """سطح تحمل ریسک."""
    LOW = "low"
    MEDIUM = "medium"
    HIGH = "high"


# ─── Program ────────────────────────────────────────────────

class ProgramStatus(str, Enum):
    """وضعیت برنامه."""
    DRAFT = "draft"
    ACTIVE = "active"
    ON_HOLD = "on_hold"
    COMPLETED = "completed"
    CLOSED = "closed"
    CANCELLED = "cancelled"


class ProgramProjectRole(str, Enum):
    """نقش پروژه در برنامه."""
    CORE = "core"
    SUPPORTING = "supporting"


# ─── Business Case ──────────────────────────────────────────

class BusinessCaseStatus(str, Enum):
    """وضعیت کیس تجاری."""
    DRAFT = "draft"
    SUBMITTED = "submitted"
    APPROVED = "approved"
    REJECTED = "rejected"


# ─── Scoring ────────────────────────────────────────────────

class ScoringCriterionCategory(str, Enum):
    """دسته‌بندی معیار امتیازدهی."""
    STRATEGIC = "strategic"
    FINANCIAL = "financial"
    RISK = "risk"
    RESOURCE = "resource"
    TECHNICAL = "technical"
    ORGANIZATIONAL = "organizational"


# ─── Benefit ────────────────────────────────────────────────

class BenefitType(str, Enum):
    """نوع منفعت."""
    FINANCIAL = "financial"
    NON_FINANCIAL = "non_financial"


class BenefitStatus(str, Enum):
    """وضعیت منفعت."""
    IDENTIFIED = "identified"
    PLANNED = "planned"
    REALIZED = "realized"
    FAILED = "failed"


class MeasurementFrequency(str, Enum):
    """فرکانس اندازه‌گیری."""
    WEEKLY = "weekly"
    MONTHLY = "monthly"
    QUARTERLY = "quarterly"
    YEARLY = "yearly"


# ─── Capacity ───────────────────────────────────────────────

class DependencyType(str, Enum):
    """نوع وابستگی بین‌پروژه‌ای."""
    FINISH_TO_START = "FS"
    START_TO_START = "SS"
    FINISH_TO_FINISH = "FF"
    START_TO_FINISH = "SF"


class CrossDependencyStatus(str, Enum):
    """وضعیت وابستگی بین‌پروژه‌ای."""
    ACTIVE = "active"
    RESOLVED = "resolved"
