from django.urls import path
from . import views

urlpatterns = [
    # Group CRUD
    path('', views.GroupListView.as_view(), name='group-list'),
    path('create/', views.GroupCreateView.as_view(), name='group-create'),
    path('<slug:slug>/', views.GroupDetailView.as_view(), name='group-detail'),
    path('<slug:slug>/update/', views.GroupUpdateView.as_view(), name='group-update'),
    path('<slug:slug>/delete/', views.GroupDeleteView.as_view(), name='group-delete'),

    # Discovery
    path('discover/suggested/', views.SuggestedGroupsView.as_view(), name='group-suggested'),
    path('discover/trending/', views.TrendingGroupsView.as_view(), name='group-trending'),
    path('discover/nearby/', views.NearbyGroupsView.as_view(), name='group-nearby'),
    path('discover/my-groups/', views.MyGroupsView.as_view(), name='group-my-groups'),

    # Membership
    path('<slug:slug>/join/', views.GroupJoinView.as_view(), name='group-join'),
    path('<slug:slug>/leave/', views.GroupLeaveView.as_view(), name='group-leave'),
    path('<slug:slug>/members/', views.GroupMembersView.as_view(), name='group-members'),
    path('<slug:slug>/invite/', views.GroupInviteView.as_view(), name='group-invite'),

    # Admin actions
    path('<slug:slug>/pending-members/', views.PendingMembersView.as_view(), name='group-pending-members'),
    path('<slug:slug>/members/<int:member_id>/approve/', views.ApproveMemberView.as_view(), name='group-approve-member'),
    path('<slug:slug>/members/<int:member_id>/reject/', views.RejectMemberView.as_view(), name='group-reject-member'),
    path('<slug:slug>/members/<int:member_id>/remove/', views.RemoveMemberView.as_view(), name='group-remove-member'),
    path('<slug:slug>/members/<int:member_id>/role/', views.ChangeMemberRoleView.as_view(), name='group-change-role'),
    path('<slug:slug>/analytics/', views.GroupAnalyticsView.as_view(), name='group-analytics'),

    # Rules
    path('<slug:slug>/rules/', views.GroupRulesView.as_view(), name='group-rules'),

    # Posts
    path('<slug:slug>/posts/', views.GroupPostsView.as_view(), name='group-posts'),
    path('<slug:slug>/posts/create/', views.GroupPostCreateView.as_view(), name='group-post-create'),
    path('<slug:slug>/posts/<int:post_id>/delete/', views.GroupPostDeleteView.as_view(), name='group-post-delete'),
    path('<slug:slug>/posts/<int:post_id>/pin/', views.GroupPostPinView.as_view(), name='group-post-pin'),
    path('<slug:slug>/posts/<int:post_id>/announce/', views.GroupPostAnnounceView.as_view(), name='group-post-announce'),
    path('<slug:slug>/pending-posts/', views.PendingPostsView.as_view(), name='group-pending-posts'),
    path('<slug:slug>/posts/<int:post_id>/approve/', views.ApprovePostView.as_view(), name='group-post-approve'),
    path('<slug:slug>/posts/<int:post_id>/reject/', views.RejectPostView.as_view(), name='group-post-reject'),

    # Post Social
    path('posts/<int:post_id>/like/', views.GroupPostLikeToggleView.as_view(), name='group-post-like'),
    path('posts/<int:post_id>/comments/', views.GroupPostCommentsView.as_view(), name='group-post-comments'),
    path('posts/comments/create/', views.GroupPostCommentCreateView.as_view(), name='group-post-comment-create'),
    path('posts/comments/<int:comment_id>/delete/', views.GroupPostCommentDeleteView.as_view(), name='group-post-comment-delete'),

    # Reports
    path('<slug:slug>/report/', views.GroupReportView.as_view(), name='group-report'),

    # Mall Reviews
    path('<slug:slug>/reviews/', views.MallReviewsListView.as_view(), name='mall-reviews'),
    path('<slug:slug>/reviews/create/', views.MallReviewCreateView.as_view(), name='mall-review-create'),

    # Mall Chat
    path('<slug:slug>/chat/', views.MallChatListView.as_view(), name='mall-chat'),
    path('<slug:slug>/chat/send/', views.MallChatSendView.as_view(), name='mall-chat-send'),
    path('<slug:slug>/chat/<int:message_id>/delete/', views.MallChatDeleteView.as_view(), name='mall-chat-delete'),
    path('<slug:slug>/chat/<int:message_id>/pin/', views.MallChatPinView.as_view(), name='mall-chat-pin'),

    # Mall Events
    path('<slug:slug>/events/', views.MallEventsListView.as_view(), name='mall-events'),
    path('<slug:slug>/events/create/', views.MallEventCreateView.as_view(), name='mall-event-create'),
    path('<slug:slug>/events/<int:event_id>/delete/', views.MallEventDeleteView.as_view(), name='mall-event-delete'),

    # Product Requests
    path('<slug:slug>/product-requests/', views.ProductRequestsListView.as_view(), name='mall-product-requests'),
    path('<slug:slug>/product-requests/create/', views.ProductRequestCreateView.as_view(), name='mall-product-request-create'),
    path('<slug:slug>/product-requests/<int:request_id>/respond/', views.ProductRequestRespondView.as_view(), name='mall-product-request-respond'),

    # Badges & Leaderboard
    path('<slug:slug>/badges/', views.MallBadgesView.as_view(), name='mall-badges'),
    path('discover/leaderboard/', views.MallLeaderboardView.as_view(), name='mall-leaderboard'),

    # Admin Controls
    path('<slug:slug>/suspend/', views.MallSuspendView.as_view(), name='mall-suspend'),
    path('<slug:slug>/ban/', views.MallBanView.as_view(), name='mall-ban'),
    path('<slug:slug>/verify/', views.MallVerifyView.as_view(), name='mall-verify'),

    # Top Performers & Spotlight
    path('<slug:slug>/top-performers/', views.MallTopPerformersView.as_view(), name='mall-top-performers'),
    path('<slug:slug>/spotlight/', views.MallSpotlightView.as_view(), name='mall-spotlight'),

    # QR Code
    path('<slug:slug>/qr-code/', views.MallQRCodeView.as_view(), name='mall-qr-code'),
]
