from enum import Enum


class UserRole(str, Enum):
    SITE_ADMIN = "site_admin"
    ADMINISTRATOR = "administrator"
    MANAGER = "manager"
    STAFF = "staff"
    VIEW_ONLY = "view_only"


class AccountStatus(str, Enum):
    LEAD = "lead"
    PENDING = "pending"
    ONBOARDING = "onboarding"
    ACTIVE = "active"
    SUSPENDED = "suspended"
    CANCELLED = "cancelled"


class UserStatus(str, Enum):
    ACTIVE = "active"
    INACTIVE = "inactive"
    INVITED = "invited"


class PlotStatus(str, Enum):
    VACANT = "vacant"
    RESERVED = "reserved"
    OCCUPIED = "occupied"
    HOLD = "hold"


class OpportunityStage(str, Enum):
    INQUIRY = "inquiry"
    PROPOSAL = "proposal"
    SIGNED = "signed"
    COMPLETE = "complete"


class ContractStatus(str, Enum):
    DRAFT = "draft"
    SENT = "sent"
    SIGNED = "signed"
    CANCELLED = "cancelled"


class InvoiceStatus(str, Enum):
    DRAFT = "draft"
    OUTSTANDING = "outstanding"
    PARTIAL = "partial"
    PAID = "paid"
    OVERDUE = "overdue"
    VOID = "void"


class TributeStatus(str, Enum):
    PENDING = "pending"
    APPROVED = "approved"
    REJECTED = "rejected"


class NewsStatus(str, Enum):
    DRAFT = "draft"
    PUBLISHED = "published"


class SubscriptionPlan(str, Enum):
    STARTER = "starter"
    PROFESSIONAL = "professional"
    ENTERPRISE = "enterprise"


ROLE_HIERARCHY = {
    UserRole.SITE_ADMIN: 99,
    UserRole.ADMINISTRATOR: 4,
    UserRole.MANAGER: 3,
    UserRole.STAFF: 2,
    UserRole.VIEW_ONLY: 1,
}

PLAN_PRICES_CAD = {
    SubscriptionPlan.STARTER: 149.00,
    SubscriptionPlan.PROFESSIONAL: 349.00,
    SubscriptionPlan.ENTERPRISE: 749.00,
}
