from django.urls import path
from . import views
from master_admin.language_views import MySchoolLanguagesView, TranslateView
from .parent_study_material_views import (
    ParentStudyMaterialsView,
    ParentStudyMaterialDownloadView,
    ParentPreviousYearPapersView,
    ParentPreviousYearPaperDownloadView,
)

urlpatterns = [
    # Authentication endpoints
    path("login/", views.ParentLoginView.as_view(), name="parent-login"),
    path("verify-otp/", views.VerifyOTPView.as_view(), name="verify-otp"),
    path("logout/", views.ParentLogoutView.as_view(), name="parent-logout"),
    # Language endpoints
    path("languages/", MySchoolLanguagesView.as_view(), name="parent-languages"),
    path("translate/", TranslateView.as_view(), name="parent-translate"),
    # Student endpoints
    path(
        "parent-students/", views.ParentStudentsView.as_view(), name="parent-students"
    ),
    path("student-detail/", views.StudentDetailView.as_view(), name="student-detail"),
    path(
        "academic-years/",
        views.ParentAcademicYearsView.as_view(),
        name="parent-academic-years",
    ),
    path(
        "student-list/", views.StudentListView.as_view(), name="student-list"
    ),  # Keep this if needed
    path(
        "class-timetable/", views.ClassTimetableView.as_view(), name="class-timetable"
    ),
    path(
        "weekday-timetable/",
        views.WeekdayTimetableView.as_view(),
        name="weekday-timetable",
    ),
    # Parent profile
    path("profile/", views.ParentProfileView.as_view(), name="parent-profile"),
    path("fee-details/", views.StudentFeeDetailsView.as_view(), name="fee-details"),
    path(
        "payment-history/",
        views.StudentPaymentHistoryView.as_view(),
        name="payment-history",
    ),
    path("fee-summary/", views.StudentFeeSummaryView.as_view(), name="fee-summary"),
    path("weekdays/", views.WeekdayListView.as_view(), name="weekday-list"),
    path(
        "student-announcements/",
        views.StudentAnnouncementsView.as_view(),
        name="student-announcements",
    ),
    path(
        "process-payment/",
        views.ProcessFeePaymentView.as_view(),
        name="process-payment",
    ),
    path(
        "pending-components/",
        views.GetPendingComponentsView.as_view(),
        name="pending-components",
    ),
    path(
        "payment-receipt/",
        views.GetPaymentReceiptView.as_view(),
        name="payment-receipt",
    ),
    path("homework/", views.StudentHomeworkListView.as_view(), name="homework-list"),
    path("homework/open/", views.OpenTaskView.as_view(), name="homework-open"),
    path(
        "homework/submit/answer/",
        views.SaveAnswerView.as_view(),
        name="homework-save-answer",
    ),
    path(
        "homework/submit/", views.SubmitHomeworkView.as_view(), name="homework-submit"
    ),
    path(
        "attendance/overview/",
        views.ParentAttendanceOverviewView.as_view(),
        name="parent-attendance-overview",
    ),
    # Get attendance details with filters
    path(
        "attendance/details/",
        views.ParentAttendanceDetailsView.as_view(),
        name="parent-attendance-details",
    ),
    # Get monthly attendance summary
    path(
        "attendance/monthly-summary/",
        views.ParentMonthlyAttendanceView.as_view(),
        name="parent-monthly-attendance",
    ),
    # Get attendance calendar view
    path(
        "attendance/calendar/",
        views.ParentAttendanceCalendarView.as_view(),
        name="parent-attendance-calendar",
    ),
    # Get attendance statistics
    path(
        "attendance/statistics/",
        views.ParentAttendanceStatisticsView.as_view(),
        name="parent-attendance-statistics",
    ),
    # Get leave history
    path(
        "attendance/leaves/",
        views.ParentLeaveHistoryView.as_view(),
        name="parent-leave-history",
    ),
    # Get leave details
    path(
        "attendance/leaves/<int:leave_id>/",
        views.ParentLeaveDetailView.as_view(),
        name="parent-leave-detail",
    ),
    # =====================================================
    # PARENT LEAVE REQUEST MANAGEMENT
    # =====================================================
    # List leaves with filters + Create new leave request
    path(
        "attendance/leave-requests/",
        views.ParentLeaveRequestListView.as_view(),
        name="parent-leave-requests",
    ),
    path(
        "attendance/leave-requests/explain-reason/",
        views.ExplainLeaveReasonView.as_view(),
        name="explain-leave-reason",
    ),
    # Get, update, or delete a specific leave request
    path(
        "attendance/leave-requests/<int:leave_id>/",
        views.ParentLeaveRequestDetailView.as_view(),
        name="parent-leave-request-detail",
    ),
    # Get available leave types
    path(
        "attendance/leave-types/",
        views.ParentLeaveTypesView.as_view(),
        name="parent-leave-types",
    ),
    # Cancel a leave request (soft delete)
    path(
        "attendance/leave-requests/<int:leave_id>/cancel/",
        views.ParentCancelLeaveRequestView.as_view(),
        name="parent-cancel-leave-request",
    ),
    path(
        "chat/rooms/", 
        views.ParentChatRoomListView.as_view(), 
        name="parent-chat-rooms"
    ),
    
    # Get chat rooms filtered by specific enrollment (student)
    path(
        "chat/rooms/by-enrollment/",
        views.ParentChatRoomsByEnrollmentView.as_view(),
        name="parent-chat-rooms-by-enrollment",
    ),
    
    # Get details of a specific chat room
    path(
        "chat/rooms/<uuid:room_id>/",
        views.ParentChatRoomDetailView.as_view(),
        name="parent-chat-room-detail",
    ),
    
    # Get messages for a chat room (auto-marks as read)
    path(
        "chat/rooms/<uuid:room_id>/messages/",
        views.ParentChatMessageListView.as_view(),
        name="parent-chat-messages",
    ),
    
    # Mark all messages as read in a chat room (manual)
    path(
        "chat/rooms/<uuid:room_id>/mark-read/",
        views.ParentChatMarkAsReadView.as_view(),
        name="parent-chat-mark-read",
    ),
    
    # Mute a chat room
    path(
        "chat/rooms/<uuid:room_id>/mute/",
        views.ParentChatRoomMuteView.as_view(),
        name="parent-chat-mute",
        kwargs={"action": "mute"},
    ),
    
    # Unmute a chat room
    path(
        "chat/rooms/<uuid:room_id>/unmute/",
        views.ParentChatRoomMuteView.as_view(),
        name="parent-chat-unmute",
        kwargs={"action": "unmute"},
    ),
    
    # Create a new chat room (individual or group)
    path(
        "chat/rooms/create/",
        views.ParentChatRoomCreateView.as_view(),
        name="parent-chat-room-create",
    ),
    
    # Get total unread messages count across all rooms
    path(
        "chat/unread-count/",
        views.ParentChatUnreadCountView.as_view(),
        name="parent-chat-unread-count",
    ),
    
    # =====================================================
    # NEW PARENT URLs FOR STUDENT-SPECIFIC CHATS
    # =====================================================
    
    # Get all enrollments (students) for the parent
    path(
        "chat/enrollments/",
        views.ParentAllEnrollmentsView.as_view(),
        name="parent-chat-enrollments",
    ),
    
    # Get all teachers for a specific enrollment
    path(
        "chat/enrollment/<int:enrollment_id>/teachers/",
        views.ParentStudentTeachersListView.as_view(),
        name="parent-chat-student-teachers",
    ),
    
    # Create or get individual chat with a teacher
    path(
        "chat/create-teacher-chat/",
        views.ParentCreateTeacherChatView.as_view(),
        name="parent-chat-create-teacher-chat",
    ),
    # =====================================================
    # STUDENT CHAT ENDPOINTS
    # =====================================================
    # Get all chat rooms for student
    path(
        "student/chat/rooms/",
        views.StudentChatRoomListView.as_view(),
        name="student-chat-rooms",
    ),
    path(
        "student/chat/classmates/",
        views.StudentClassmatesForChatView.as_view(),
        name="student-chat-classmates",
    ),
    path(
        "student/chat/frds/",
        views.CreateStudentToStudentChatView.as_view(),
        name="student-chat-frds",
    ),
    # Get messages for a chat room
    path(
        "student/chat/rooms/<uuid:room_id>/messages/",
        views.StudentChatMessageListView.as_view(),
        name="student-chat-messages",
    ),
    # Mark all messages as read in a chat room
    path(
        "student/chat/rooms/<uuid:room_id>/mark-read/",
        views.StudentChatMarkAsReadView.as_view(),
        name="student-chat-mark-read",
    ),
    # Get total unread messages count for student
    path(
        "student/chat/unread-count/",
        views.StudentChatUnreadCountView.as_view(),
        name="student-chat-unread-count",
    ),
    path(
        "transport-types/",
        views.TransportTypeListView.as_view(),
        name="transport-types-list",
    ),
    # Transport Vehicles
    path(
        "vehicles/",
        views.TransportVehicleListView.as_view(),
        name="transport-vehicles-list",
    ),
    path(
        "vehicles/<int:vehicle_id>/",
        views.TransportVehicleDetailView.as_view(),
        name="transport-vehicle-detail",
    ),
    # Routes
    path("routes/", views.RouteListView.as_view(), name="transport-routes-list"),
    path(
        "routes/<int:route_id>/",
        views.RouteDetailView.as_view(),
        name="transport-route-detail",
    ),
    path(
        "routes/<int:route_id>/stops/",
        views.StopsByRouteView.as_view(),
        name="transport-route-stops",
    ),
    path(
        "routes/<int:route_id>/stops-with-timings/",
        views.RouteStopsWithTimingsView.as_view(),
        name="transport-route-stops-timings",
    ),
    path(
        "routes-summary/",
        views.TransportRoutesWithDetailsView.as_view(),
        name="transport-routes-summary",
    ),
    # Student Transport
    path(
        "student-transport/",
        views.StudentTransportListView.as_view(),
        name="student-transport-list",
    ),
    path(
        "student-transport/<int:transport_id>/",
        views.StudentTransportDetailView.as_view(),
        name="student-transport-detail",
    ),
    path(
        "student-transport/current/",
        views.StudentCurrentTransportView.as_view(),
        name="student-current-transport",
    ),
    path(
        "student-transport/enrollment/<int:enrollment_id>/",
        views.StudentTransportByEnrollmentView.as_view(),
        name="student-transport-by-enrollment",
    ),
    # Parent Transport (for multiple children)
    path(
        "parent/students-transport/",
        views.ParentStudentsTransportView.as_view(),
        name="parent-students-transport",
    ),
    
    # Add these to your existing urlpatterns in parent/urls.py

# =====================================================
# EXAM ENDPOINTS
# =====================================================
    path('exams/upcoming/', views.ParentUpcomingExamsView.as_view(), name='parent-exams-upcoming'),
    path('exams/past/', views.ParentPastExamsView.as_view(), name='parent-exams-past'),
    path('exams/summary/', views.ParentAllExamsSummaryView.as_view(), name='parent-exams-summary'),
    path('exams/<int:exam_id>/', views.ParentExamDetailView.as_view(), name='parent-exam-detail'),
    path('exams/<int:exam_id>/result/', views.ParentExamResultView.as_view(), name='parent-exam-result'),
    path('exams/<int:exam_id>/hall-ticket/', views.ParentExamHallTicketView.as_view(), name='parent-exam-hall-ticket'),
    path('exams/<int:exam_id>/subjects/<int:subject_id>/', views.ParentExamSubjectDetailView.as_view(), name='parent-exam-subject-detail'),
    path('exams/registration-status/', views.ParentStudentExamRegistrationStatusView.as_view(), name='parent-exam-registration-status'),
    
    path(
        "exams/student-results/",
        views.ParentAllExamsSummaryView.as_view(),
        name="parent-student-all-results",
    ),
    
    path(
    "exams/subject-wise-result/",
    views.ParentExamSubjectWiseResultView.as_view(),
    name="parent-exam-subject-wise-result",
),
    path(
        "exams/class-tests/",
        views.ParentStudentClassTestsView.as_view(),
        name="parent-student-class-tests",
    ),
    # =====================================================
    # AI PARENT ASSISTANT
    # =====================================================
    path(
        "ai/assistant/",
        views.AIParentAssistantView.as_view(),
        name="ai-parent-assistant",
    ),
    # =====================================================
    # BOOKS / SUBJECT DOCUMENTS
    # =====================================================
    path(
        "books/",
        views.StudentSubjectBooksView.as_view(),
        name="student-subject-books",
    ),
    # =====================================================
    # STUDY MATERIALS (teacher-uploaded, student read-only)
    # =====================================================
    path(
        "study-materials/",
        ParentStudyMaterialsView.as_view(),
        name="parent-study-materials",
    ),
    path(
        "study-materials/<int:pk>/download/",
        ParentStudyMaterialDownloadView.as_view(),
        name="parent-study-material-download",
    ),
    # =====================================================
    # PREVIOUS YEAR PAPERS (student read-only)
    # =====================================================
    path(
        "previous-year-papers/",
        ParentPreviousYearPapersView.as_view(),
        name="parent-previous-year-papers",
    ),
    path(
        "previous-year-papers/<int:pk>/download/",
        ParentPreviousYearPaperDownloadView.as_view(),
        name="parent-previous-year-paper-download",
    ),
]
