From 8c230352f919a7f1a9e7a7305fdc3d5f0c01c8bb Mon Sep 17 00:00:00 2001 From: rajavi-mishra Date: Wed, 3 Mar 2021 13:58:36 -0800 Subject: [PATCH] added more conditions --- .../ticket_purchases_controller.rb | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/app/controllers/ticket_purchases_controller.rb b/app/controllers/ticket_purchases_controller.rb index 4cbfeac2..bb60d00f 100644 --- a/app/controllers/ticket_purchases_controller.rb +++ b/app/controllers/ticket_purchases_controller.rb @@ -29,24 +29,42 @@ class TicketPurchasesController < ApplicationController # 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? + # this works? maybe # 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 + for ticket_purchase in current_user.ticket_purchases.by_conference(@conference) + if ticket_purchase.paid? + for physical_ticket in ticket_purchase.physical_tickets + if physical_ticket.ticket.registration_ticket? + redirect_to conference_physical_tickets_path, + notice: 'You already have tickets for the conference.' + return + end + end + end end # 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: 'Please get at least one ticket to continue.' - return + seen_registration = false + for ticket_purchase in current_user.ticket_purchases.by_conference(@conference) + for physical_ticket in ticket_purchase.physical_tickets + if physical_ticket.ticket.registration_ticket + seen = true + break + end + end + end + if !seen + redirect_to conference_tickets_path(@conference.short_title), + error: 'Please get at least one registration ticket to continue.' + return + end end - # TODO: Need to check if the current user didn't a registration ticket and is purchasing one + # TODO: Need to check if the current user didn't have a registration ticket and is purchasing one redirect_to new_conference_conference_registration_path(@conference.short_title) # # otherwise # redirect_to conference_physical_tickets_path