"""
PM API URLs.

تنظیمات مسیرهای API ماژول مدیریت پروژه.
"""
from django.urls import path, include
from rest_framework.routers import DefaultRouter

from .views import (
    ProjectViewSet,
    TaskViewSet,
    DependencyViewSet,
    ResourceViewSet,
    ResourceAssignmentViewSet,
    BudgetViewSet,
    CostEntryViewSet,
    RiskViewSet,
    BaselineViewSet,
    CalendarViewSet,
    HolidayViewSet,
    ChangeRequestViewSet,
    TimesheetViewSet,
    ProjectMemberViewSet,
    CommentViewSet,
    ActivityLogViewSet,
    TaskLabelViewSet,
    TaskLabelAssignmentViewSet,
    TaskAttachmentViewSet,
    TaskChecklistViewSet,
    TaskChecklistItemViewSet,
    RACIAssignmentViewSet,
    KanbanBoardViewSet,
    # Advanced ViewSets
    ActivityCodeTypeViewSet,
    ActivityCodeValueViewSet,
    TaskActivityCodeViewSet,
    UDFDefinitionViewSet,
    UDFValueViewSet,
    ResourceSkillViewSet,
    ResourceAvailabilityViewSet,
    ResourceCostRateViewSet,
    CostAccountViewSet,
    FundingSourceViewSet,
    CashFlowEntryViewSet,
    ScheduleHealthViewSet,
    ProjectTemplateViewSet,
    MonteCarloViewSet,
    ResourceLevelingViewSet,
    IssueViewSet,
    OBSNodeViewSet,
    RBSNodeViewSet,
    QualityPlanViewSet,
    InspectionViewSet,
    NCRViewSet,
    QualityChecklistViewSet,
    QualityChecklistItemViewSet,
    ProjectDocumentViewSet,
)

app_name = "pm"

router = DefaultRouter()
router.register(r"projects", ProjectViewSet, basename="project")
router.register(r"tasks", TaskViewSet, basename="task")
router.register(r"dependencies", DependencyViewSet, basename="dependency")
router.register(r"resources", ResourceViewSet, basename="resource")
router.register(r"resource-assignments", ResourceAssignmentViewSet, basename="resource-assignment")
router.register(r"budgets", BudgetViewSet, basename="budget")
router.register(r"cost-entries", CostEntryViewSet, basename="cost-entry")
router.register(r"risks", RiskViewSet, basename="risk")
router.register(r"baselines", BaselineViewSet, basename="baseline")
router.register(r"calendars", CalendarViewSet, basename="calendar")
router.register(r"holidays", HolidayViewSet, basename="holiday")
router.register(r"change-requests", ChangeRequestViewSet, basename="change-request")
router.register(r"timesheets", TimesheetViewSet, basename="timesheet")
router.register(r"project-members", ProjectMemberViewSet, basename="project-member")
router.register(r"comments", CommentViewSet, basename="comment")
router.register(r"activity-logs", ActivityLogViewSet, basename="activity-log")
# --- Kanban & RACI ---
router.register(r"task-labels", TaskLabelViewSet, basename="task-label")
router.register(r"task-label-assignments", TaskLabelAssignmentViewSet, basename="task-label-assignment")
router.register(r"task-attachments", TaskAttachmentViewSet, basename="task-attachment")
router.register(r"task-checklists", TaskChecklistViewSet, basename="task-checklist")
router.register(r"task-checklist-items", TaskChecklistItemViewSet, basename="task-checklist-item")
router.register(r"raci", RACIAssignmentViewSet, basename="raci")
router.register(r"kanban", KanbanBoardViewSet, basename="kanban")
# --- Advanced Features ---
router.register(r"activity-code-types", ActivityCodeTypeViewSet, basename="activity-code-type")
router.register(r"activity-code-values", ActivityCodeValueViewSet, basename="activity-code-value")
router.register(r"task-activity-codes", TaskActivityCodeViewSet, basename="task-activity-code")
router.register(r"udf-definitions", UDFDefinitionViewSet, basename="udf-definition")
router.register(r"udf-values", UDFValueViewSet, basename="udf-value")
router.register(r"resource-skills", ResourceSkillViewSet, basename="resource-skill")
router.register(r"resource-availability", ResourceAvailabilityViewSet, basename="resource-availability")
router.register(r"resource-cost-rates", ResourceCostRateViewSet, basename="resource-cost-rate")
router.register(r"cost-accounts", CostAccountViewSet, basename="cost-account")
router.register(r"funding-sources", FundingSourceViewSet, basename="funding-source")
router.register(r"cash-flow", CashFlowEntryViewSet, basename="cash-flow")
router.register(r"schedule-health", ScheduleHealthViewSet, basename="schedule-health")
router.register(r"project-templates", ProjectTemplateViewSet, basename="project-template")
router.register(r"monte-carlo", MonteCarloViewSet, basename="monte-carlo")
router.register(r"resource-leveling", ResourceLevelingViewSet, basename="resource-leveling")
# --- Issue Log ---
router.register(r"issues", IssueViewSet, basename="issue")
# --- OBS ---
router.register(r"obs-nodes", OBSNodeViewSet, basename="obs-node")
# --- RBS ---
router.register(r"rbs-nodes", RBSNodeViewSet, basename="rbs-node")
# --- Quality Management ---
router.register(r"quality-plans", QualityPlanViewSet, basename="quality-plan")
router.register(r"inspections", InspectionViewSet, basename="inspection")
router.register(r"ncrs", NCRViewSet, basename="ncr")
router.register(r"quality-checklists", QualityChecklistViewSet, basename="quality-checklist")
router.register(r"quality-checklist-items", QualityChecklistItemViewSet, basename="quality-checklist-item")
# --- Document Control Integration ---
router.register(r"project-documents", ProjectDocumentViewSet, basename="project-document")

urlpatterns = [
    path("", include(router.urls)),
]
