diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb
index 0576ed7..2d7f456 100644
--- a/app/controllers/orders_controller.rb
+++ b/app/controllers/orders_controller.rb
@@ -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
diff --git a/app/controllers/tickets_controller.rb b/app/controllers/tickets_controller.rb
index 05dc360..08d5574 100644
--- a/app/controllers/tickets_controller.rb
+++ b/app/controllers/tickets_controller.rb
@@ -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
diff --git a/app/javascript/controllers/ticket_selection_controller.js b/app/javascript/controllers/ticket_selection_controller.js
index 8e9da7e..1c6aab2 100644
--- a/app/javascript/controllers/ticket_selection_controller.js
+++ b/app/javascript/controllers/ticket_selection_controller.js
@@ -10,12 +10,17 @@ export default class extends Controller {
"checkoutButton",
"form",
];
- static values = { eventSlug: String, eventId: String };
+
+ static values = { targetUrl: String, eventSlug: String, eventId: String };
// Initialize the controller and update the cart summary
connect() {
+ console.log("TicketSelectionController connected");
+ console.log("Target URL: ", this.target);
+
this.updateCartSummary();
this.bindFormSubmission();
+
}
// Bind form submission to handle cart storage
@@ -118,8 +123,9 @@ export default class extends Controller {
await this.storeCartInSession(cartData);
// Redirect to event-scoped orders/new page
- const OrderNewUrl = `/events/${this.eventSlugValue}.${this.eventIdValue}/orders/new`;
- window.location.href = OrderNewUrl;
+ // const orderNewUrl = `/orders/new/events/${this.eventSlugValue}.${this.eventIdValue}`;
+ const orderNewUrl = `/orders/new/events/${this.eventSlugValue}.${this.eventIdValue}`;
+ window.location.href = orderNewUrl;
} catch (error) {
console.error("Error storing cart:", error);
alert("Une erreur est survenue. Veuillez réessayer.");
diff --git a/app/views/components/_header.html.erb b/app/views/components/_header.html.erb
index 75f9e21..52c2919 100755
--- a/app/views/components/_header.html.erb
+++ b/app/views/components/_header.html.erb
@@ -30,7 +30,7 @@
-
+
<% else %>
- <%= link_to t("header.login"), new_user_session_path,
+ <%= link_to "Se connecter", new_user_session_path,
class: "text-gray-100 hover:text-purple-200 px-3 py-2 rounded-md text-sm font-medium transition-colors duration-200" %>
- <%= link_to t("header.register"), new_user_registration_path,
+ <%= link_to "S'inscrire", new_user_registration_path,
class: "bg-purple-600 text-white font-medium py-2 px-4 rounded-lg hover:bg-purple-700 transition-colors duration-200" %>
<% end %>
diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb
index a1d83ac..b54b6f8 100755
--- a/app/views/events/show.html.erb
+++ b/app/views/events/show.html.erb
@@ -197,7 +197,8 @@
- <%= form_with url: event_order_new_path(@event.slug, @event.id), method: :get, id: "checkout_form", local: true, data: {
+ <%= form_with url: order_new_path(@event.slug, @event.id), method: :get, id: "checkout_form", local: true, data: {
+ target: order_new_path(@event.slug, @event.id),
controller: "ticket-selection",
ticket_selection_target: "form",
ticket_selection_event_slug_value: @event.slug,
diff --git a/app/views/orders/new.html.erb b/app/views/orders/new.html.erb
index d784f12..32c6614 100644
--- a/app/views/orders/new.html.erb
+++ b/app/views/orders/new.html.erb
@@ -89,7 +89,7 @@
Veuillez fournir les prénoms et noms des personnes qui utiliseront les billets.
- <%= form_with url: event_order_create_path(@event.slug, @event.id), method: :post, local: true, class: "space-y-8" do |form| %>
+ <%= form_with url: order_create_path(@event.slug, @event.id), method: :post, local: true, class: "space-y-8" do |form| %>
diff --git a/app/views/orders/show.html.erb b/app/views/orders/show.html.erb
index 26450f8..c6f33e3 100644
--- a/app/views/orders/show.html.erb
+++ b/app/views/orders/show.html.erb
@@ -88,7 +88,7 @@
<% end %>
<% if @order.can_retry_payment? %>
- <%= link_to checkout_order_path(@order), class: "bg-purple-600 hover:bg-purple-700 text-white font-medium py-2 px-4 rounded-lg transition-colors" do %>
+ <%= link_to order_checkout_path(@order), class: "bg-purple-600 hover:bg-purple-700 text-white font-medium py-2 px-4 rounded-lg transition-colors" do %>