Refactor routes to use cleaner URL structure with order_id parameter

This commit is contained in:
kbe
2025-09-06 03:12:11 +02:00
parent 01b545c83e
commit d9d43f45e5
11 changed files with 75 additions and 101 deletions

View File

@@ -87,14 +87,14 @@ class OrdersController < ApplicationController
if success
session[:draft_order_id] = @order.id
session.delete(:pending_cart)
redirect_to checkout_order_path(@order)
redirect_to order_checkout_path(@order)
else
redirect_to event_order_new_path(@event.slug, @event.id)
redirect_to order_new_path(@event.slug, @event.id)
end
rescue => e
error_message = e.message.present? ? e.message : "Erreur inconnue"
flash[:alert] = "Une erreur est survenue: #{error_message}"
redirect_to event_order_new_path(@event.slug, @event.id)
redirect_to order_new_path(@event.slug, @event.id)
end
# Display order summary
@@ -146,7 +146,7 @@ class OrdersController < ApplicationController
return
end
redirect_to checkout_order_path(@order)
redirect_to order_checkout_path(@order)
end
# Handle successful payment
@@ -225,7 +225,7 @@ class OrdersController < ApplicationController
order = current_user.orders.find_by(id: order_id, status: "draft")
if order&.can_retry_payment?
redirect_to checkout_order_path(order),
redirect_to order_checkout_path(order),
alert: "Le paiement a été annulé. Vous pouvez réessayer."
else
session.delete(:draft_order_id)
@@ -239,7 +239,7 @@ class OrdersController < ApplicationController
private
def set_order
@order = current_user.orders.includes(:tickets, :event).find(params[:id])
@order = current_user.orders.includes(:tickets, :event).find(params[:order_id] || params[:id])
rescue ActiveRecord::RecordNotFound
redirect_to root_path, alert: "Commande non trouvée"
end

View File

@@ -3,7 +3,7 @@
# This controller now primarily handles legacy redirects and backward compatibility
# Most ticket creation functionality has been moved to OrdersController
class TicketsController < ApplicationController
before_action :authenticate_user!, only: [ :payment_success, :payment_cancel ]
before_action :authenticate_user!, only: [ :show, :ticket_view ]
before_action :set_event, only: [ :checkout, :retry_payment ]
@@ -23,37 +23,20 @@ class TicketsController < ApplicationController
redirect_to event_path(@event.slug, @event), alert: "Aucun billet en attente de paiement"
end
# Redirect to order-based payment success
def payment_success
redirect_to order_payment_success_path(session_id: params[:session_id])
end
# Redirect to order-based payment cancel
def payment_cancel
redirect_to order_payment_cancel_path
end
# Redirect retry payment to order system
def retry_payment
@event = Event.includes(:ticket_types).find(params[:id])
# Look for draft order for this event
order = current_user.orders.find_by(event: @event, status: "draft")
if order&.can_retry_payment?
redirect_to retry_payment_order_path(order)
else
redirect_to event_path(@event.slug, @event),
alert: "Aucune commande disponible pour un nouveau paiement"
end
end
def show
@ticket = current_user.orders.joins(:tickets).find(params[:ticket_id])
@event = @ticket.event
rescue ActiveRecord::RecordNotFound
redirect_to dashboard_path, alert: "Billet non trouvé"
end
def ticket_view
@ticket = current_user.orders.joins(:tickets).find(params[:ticket_id])
@event = @ticket.event
rescue ActiveRecord::RecordNotFound
redirect_to dashboard_path, alert: "Billet non trouvé"
end
private
def set_event