class TicketMailer < ApplicationMailer def purchase_confirmation_order(order) @order = order @user = order.user @event = order.event @tickets = order.tickets # Generate PDF attachments for all tickets @tickets.each do |ticket| pdf = ticket.to_pdf attachments["ticket-#{@event.name.parameterize}-#{ticket.qr_code[0..7]}.pdf"] = { mime_type: "application/pdf", content: pdf } end mail( to: @user.email, subject: "Confirmation d'achat - #{@event.name}", template_name: "purchase_confirmation" ) end def purchase_confirmation(ticket) @ticket = ticket @user = ticket.user @event = ticket.event # Generate PDF attachment pdf = @ticket.to_pdf attachments["ticket-#{@event.name.parameterize}-#{@ticket.qr_code[0..7]}.pdf"] = { mime_type: "application/pdf", content: pdf } mail( to: @user.email, subject: "Confirmation d'achat - #{@event.name}" ) end def event_reminder(user, event, days_before) @user = user @event = event @days_before = days_before # Get user's tickets for this event @tickets = Ticket.joins(:order, :ticket_type) .where(orders: { user: @user }, ticket_types: { event: @event }, status: "active") return if @tickets.empty? subject = case days_before when 7 "Rappel : #{@event.name} dans une semaine" when 1 "Rappel : #{@event.name} demain" when 0 "C'est aujourd'hui : #{@event.name}" else "Rappel : #{@event.name} dans #{days_before} jours" end mail( to: @user.email, subject: subject, template_name: "event_reminder" ) end end