From 48a689d4522695ba0061e57cc68f9ba2ebc9c624 Mon Sep 17 00:00:00 2001 From: Jimmy Date: Wed, 3 Mar 2021 13:29:54 -0800 Subject: [PATCH] temp --- .../ticket_purchases_controller.rb | 49 ++++++++++++++----- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/app/controllers/ticket_purchases_controller.rb b/app/controllers/ticket_purchases_controller.rb index e165cd78..4cbfeac2 100644 --- a/app/controllers/ticket_purchases_controller.rb +++ b/app/controllers/ticket_purchases_controller.rb @@ -8,25 +8,48 @@ class TicketPurchasesController < ApplicationController def create current_user.ticket_purchases.by_conference(@conference).unpaid.destroy_all + + # Create a ticket purchase which can be paid or unpaid + message = TicketPurchase.purchase(@conference, current_user, params[:tickets].try(:first)) + + # Failed to create ticket purchase + if !message.blank? + redirect_to conference_tickets_path(@conference.short_title), + error: "Oops, something went wrong with your purchase! #{message}" + return + end + + # Ticket purchase created but not paid + if current_user.ticket_purchases.by_conference(@conference).unpaid.any? + redirect_to new_conference_payment_path, + notice: 'Please pay here to get tickets.' + return + end + + # TODO: User already paid for a registration ticket and ticket purchase contains one + # BUG: When the ticket is free, user will see the notice after they click `Continue` + + # Two types of ticket? + + # TODO: Need to check if current_user.ticket_purchases.by_conference(@conference).paid.any? redirect_to conference_physical_tickets_path, notice: 'You already have tickets for the conference.' + return end - message = TicketPurchase.purchase(@conference, current_user, params[:tickets].try(:first)) - if message.blank? - if current_user.ticket_purchases.by_conference(@conference).unpaid.any? - redirect_to new_conference_payment_path, - notice: 'Please pay here to get tickets.' - elsif @conference.tickets.for_registration.any? - redirect_to conference_tickets_path(@conference.short_title), - error: 'Please get at least one ticket to continue.' - else - redirect_to new_conference_conference_registration_path(@conference.short_title) - end - else + + # TODO: User wants to purchase a non-registration ticket but does not have a registration ticket but conference requires one + # BUG: When the user only purchases a non-registration ticket, + if @conference.registration_ticket_required? redirect_to conference_tickets_path(@conference.short_title), - error: "Oops, something went wrong with your purchase! #{message}" + error: 'Please get at least one ticket to continue.' + return end + + # TODO: Need to check if the current user didn't a registration ticket and is purchasing one + redirect_to new_conference_conference_registration_path(@conference.short_title) + # # otherwise + # redirect_to conference_physical_tickets_path end def index