# ============================================
# STEP 1: Add this view function to your views.py
# ============================================

from django.contrib.admin.views.decorators import staff_member_required
from django.shortcuts import render

@staff_member_required
def transaction_reversal_page(request):
    """
    Admin page for reversing transactions.
    Only accessible to staff/admin users.
    """
    return render(request, 'transaction_reversal.html', {
        'title': 'Transaction Reversal',
    })


# ============================================
# STEP 2: Update your urls.py imports
# ============================================

from django.urls import path, include
from django.conf import settings 
from django.conf.urls.static import static  
from .views import (
    ProductViewSet, LocationViewSet, StockLevelViewSet, DeviceRegisterView,
    TransactionSyncView, TransactionViewSet, dashboard_summary, transactionitem_summary,
    driver_dashboard, admin_stock_view, DeviceViewSet,
    get_receipt_data, recent_transactions, mark_receipt_printed, 
    ecommerce_products, get_sales_target, get_bonus_history, get_expense_categories,
    submit_mobile_expense, get_recent_expenses
    , reversible_transactions, transaction_reversal_preview,
    transaction_reversal_page, credit_sales_list,mark_credit_paid,cashier_void_transaction
)
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'products', ProductViewSet, basename='product')
router.register(r'locations', LocationViewSet, basename='location')
router.register(r'stock-levels', StockLevelViewSet, basename='stocklevel')
router.register(r'transactions', TransactionViewSet, basename='transaction')
router.register(r'devices', DeviceViewSet)

urlpatterns = [
    path('transactions/sync/', TransactionSyncView.as_view(), name='transaction-sync'),
    path('', include(router.urls)),
    path('devices/register/', DeviceRegisterView.as_view(), name='device-register'),
    path('dashboard/summary/', dashboard_summary, name='dashboard-summary'),
    path('transactionitems/summary/', transactionitem_summary, name='transactionitem-summary'),
    path("dashboard/driver/<uuid:device_id>/", driver_dashboard, name="driver-dashboard"),
    path("admin/stock/", admin_stock_view, name="admin-stock"),
    
    # ✅ ADD THIS - Admin Reversal Page (HTML)
    path('admin/transaction-reversal/', transaction_reversal_page, name='transaction-reversal-page'),
    
    # Receipt Endpoints
    path('receipts/recent/', recent_transactions, name='recent-transactions'),
    path('receipts/<uuid:transaction_id>/printed/', mark_receipt_printed, name='mark-printed'),
    path('receipts/<uuid:transaction_id>/', get_receipt_data, name='get-receipt'),

    # Transaction Reversal Endpoints (API - ADMIN ONLY)
    path('transactions/reversible/', reversible_transactions, name='reversible-transactions'),
    path('transactions/<uuid:transaction_id>/reverse/preview/', transaction_reversal_preview, name='reverse-preview'),


    # Ecommerce endpoints
    path('ecommerce/products/', ecommerce_products, name='ecommerce-products'),
    
    # Sales Target & Bonus
    path('sales-target/', get_sales_target, name='sales-target'),
    path('bonus-history/', get_bonus_history, name='bonus-history'),
    
    # Mobile Expenses
    path('expenses/categories/', get_expense_categories, name='expense-categories'),
    path('expenses/submit/', submit_mobile_expense, name='submit-expense'),
    path('expenses/recent/', get_recent_expenses, name='recent-expenses'),

    # nw credit urls
    path('credits/', credit_sales_list, name='credit-list'),
    path('credits/<uuid:credit_id>/mark-paid/', mark_credit_paid, name='credit-mark-paid'),
    path('transactions/<uuid:transaction_id>/void/',  cashier_void_transaction, name='cashier-void'),
]

# Serve media files in development
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
