from django.urls import path
from rest_framework_simplejwt.views import TokenRefreshView

from accounts.views import (
    CustomTokenObtainPairView, LogoutView,
    MeView, UserListCreateView, UserDetailView,
)
from members.views import (
    MemberListCreateView, MemberDetailView, MemberStatsView,
)
from departments.views import (
    DepartmentListCreateView, DepartmentDetailView, DepartmentStatsView,
)
from events.views import (
    EventListCreateView, EventDetailView, UpcomingEventsView,
)
from finance.views import (
    ContributionListCreateView, ContributionDetailView,
    ContributionTypeListView, ContributionTypeDetailView,
    PaymentMethodListView, PaymentMethodDetailView,
    FinanceSummaryView, STKPushView,
    stk_callback, c2b_confirmation, c2b_validation,
)
from reports.views import (
    ReportSummaryView, ExportPDFView, ExportExcelView,
)

urlpatterns = [
    # Auth
    path('auth/login/', CustomTokenObtainPairView.as_view()),
    path('auth/refresh/', TokenRefreshView.as_view()),
    path('auth/logout/', LogoutView.as_view()),
    path('auth/me/', MeView.as_view()),

    # Users
    path('users/', UserListCreateView.as_view()),
    path('users/<int:pk>/', UserDetailView.as_view()),

    # Members
    path('members/', MemberListCreateView.as_view()),
    path('members/<int:pk>/', MemberDetailView.as_view()),
    path('members/stats/', MemberStatsView.as_view()),

    # Departments
    path('departments/', DepartmentListCreateView.as_view()),
    path('departments/<int:pk>/', DepartmentDetailView.as_view()),
    path('departments/stats/', DepartmentStatsView.as_view()),

    # Events
    path('events/', EventListCreateView.as_view()),
    path('events/<int:pk>/', EventDetailView.as_view()),
    path('events/upcoming/', UpcomingEventsView.as_view()),

    # Finance
    path('finance/contributions/', ContributionListCreateView.as_view()),
    path('finance/contributions/<int:pk>/', ContributionDetailView.as_view()),
    path('finance/contribution-types/', ContributionTypeListView.as_view()),
    path('finance/contribution-types/<int:pk>/', ContributionTypeDetailView.as_view()),
    path('finance/payment-methods/<int:pk>/', PaymentMethodDetailView.as_view()),
    path('finance/payment-methods/', PaymentMethodListView.as_view()),
    path('finance/summary/', FinanceSummaryView.as_view()),
    path('finance/mpesa/stk-push/', STKPushView.as_view()),
    path('finance/mpesa/stk-callback/', stk_callback),
    path('finance/mpesa/c2b-confirmation/', c2b_confirmation),
    path('finance/mpesa/c2b-validation/', c2b_validation),

    # Reports
    path('reports/summary/', ReportSummaryView.as_view()),
    path('reports/export/pdf/', ExportPDFView.as_view()),
    path('reports/export/excel/', ExportExcelView.as_view()),
]