from django.urls import path
from . import views

app_name = 'payments'

urlpatterns = [
    path('', views.PaymentListView.as_view(), name='payment_list'),

    # Specific paths must come before generic patterns
    path('create/', views.create_payment, name='create_payment'),
    path('record-cash/', views.record_cash_payment, name='record_cash_payment'),
    path('customer-stk-push/', views.customer_stk_push, name='customer_stk_push'),
    path('mpesa-stk-push/', views.mpesa_stk_push, name='mpesa_stk_push'),

    # M-Pesa Balance Check
    path('check-balance/', views.check_mpesa_balance, name='check_mpesa_balance'),
    path('balance-history/', views.get_mpesa_balance_history, name='get_mpesa_balance_history'),

    # Unreconciled payments - must come before generic payment_id pattern
    path('unreconciled/', views.unreconciled_payments_list, name='unreconciled_payments_list'),
    path('unreconciled/<int:payment_id>/resolve/', views.resolve_unreconciled_payment, name='resolve_unreconciled_payment'),

    # M-Pesa Callbacks
    path('stk-callback/', views.mpesa_callback, name='mpesa_callback'),
    path('paybill-callback/', views.mpesa_paybill_callback, name='mpesa_paybill_callback'),
    path('paybill-validation/', views.mpesa_paybill_validation, name='mpesa_paybill_validation'),
    path('paybill-confirmation/', views.mpesa_paybill_confirmation, name='mpesa_paybill_confirmation'),
    path('mpesa-balance-callback/', views.mpesa_balance_callback, name='mpesa_balance_callback'),
    path('mpesa-b2c-callback/', views.mpesa_b2c_callback, name='mpesa_b2c_callback'),
    path('mpesa-b2b-callback/', views.mpesa_b2b_callback, name='mpesa_b2b_callback'),
    path('mpesa-reversal-callback/', views.mpesa_reversal_callback, name='mpesa_reversal_callback'),

    # Generic patterns must come last
    path('customer/<str:customer_id>/', views.customer_payments, name='customer_payments'),
    path('receipt/<str:payment_id>/', views.payment_receipt, name='payment_receipt'),
    path('<str:payment_id>/', views.payment_detail, name='payment_detail'),
]