Files
aperonight/app/controllers/tickets_controller.rb
kbe ce0752bbda feat: Complete email notifications system with comprehensive functionality
- Implement comprehensive email notification system for ticket purchases and event reminders
- Add event reminder job with configurable scheduling
- Enhance ticket mailer with QR code generation and proper formatting
- Update order model with email delivery tracking
- Add comprehensive test coverage for all email functionality
- Configure proper mailer settings and disable annotations
- Update backlog to reflect completed email features

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-06 20:21:01 +02:00

86 lines
2.8 KiB
Ruby

# Legacy tickets controller - redirects to new order system
#
# 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, :show ]
before_action :set_event, only: [ :checkout, :retry_payment ]
# Redirect to order-based checkout
def checkout
# Check for draft order
if session[:draft_order_id].present?
order = current_user.orders.find_by(id: session[:draft_order_id], status: "draft")
if order.present?
redirect_to order_checkout_path(order)
return
end
end
# No order found
@event = Event.includes(:ticket_types).find(params[:id])
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 = Ticket.joins(order: :user).includes(:event, :ticket_type, order: :user).find_by(
tickets: { id: params[:ticket_id] },
orders: { user_id: current_user.id }
)
if @ticket.nil?
redirect_to dashboard_path, alert: "Billet non trouvé"
return
end
@event = @ticket.event
rescue ActiveRecord::RecordNotFound
redirect_to dashboard_path, alert: "Billet non trouvé"
end
private
def set_event
event_id = params[:id] || session[:event_id]
Rails.logger.debug "TicketsController#set_event - params[:id]: #{params[:id].inspect}, session[:event_id]: #{session[:event_id].inspect}"
unless event_id
Rails.logger.error "TicketsController#set_event - No event ID found"
redirect_to events_path, alert: "Aucun événement spécifié"
return
end
@event = Event.includes(:ticket_types).find(event_id)
Rails.logger.debug "TicketsController#set_event - Found event: #{@event.id} - #{@event.name}"
rescue ActiveRecord::RecordNotFound
Rails.logger.error "TicketsController#set_event - Event not found with ID: #{event_id}"
redirect_to events_path, alert: "Événement non trouvé"
end
end