Make open source
This commit is contained in:
75
app/controllers/guests_controller.rb
Normal file
75
app/controllers/guests_controller.rb
Normal file
@ -0,0 +1,75 @@
|
||||
class GuestsController < ApplicationController
|
||||
def new
|
||||
respond_to :html
|
||||
|
||||
@guest = Guest.new
|
||||
end
|
||||
|
||||
def create
|
||||
respond_to :html
|
||||
|
||||
@guest = Guest.new(guest_params)
|
||||
unless ENV['RECAPTCHA_SECRET_KEY'].blank? || verify_recaptcha(model: @guest)
|
||||
render :new
|
||||
return
|
||||
end
|
||||
|
||||
if @guest.save
|
||||
redirect_to guest_path(@guest)
|
||||
else
|
||||
existing_guest = Guest.find_by(email: guest_params[:email])
|
||||
if existing_guest
|
||||
@guest = existing_guest
|
||||
GuestMailer.welcome_back_email(@guest).deliver_now
|
||||
render :new_exists
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
respond_to :html
|
||||
|
||||
@guest = Guest.find_by_id_token(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
@guest = Guest.find_by_id_token(params[:id])
|
||||
|
||||
if @guest.update(guest_params)
|
||||
if @guest.attending?
|
||||
redirect_to guest_plus_ones_path(@guest)
|
||||
else
|
||||
redirect_to confirm_guest_path(@guest)
|
||||
end
|
||||
else
|
||||
render :show
|
||||
end
|
||||
end
|
||||
|
||||
def confirm
|
||||
respond_to :html
|
||||
|
||||
@guest = Guest.find_by_id_token(params[:id])
|
||||
end
|
||||
|
||||
def complete
|
||||
respond_to :html
|
||||
|
||||
@guest = Guest.find_by_id_token(params[:id])
|
||||
Guest.transaction do
|
||||
@guest.update!(guest_params)
|
||||
@guest.touch :confirmed_at
|
||||
end
|
||||
GuestMailer.confirmation_email(@guest).deliver_now
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def guest_params
|
||||
params.require(:guest).permit(
|
||||
:email, :first_name, :last_name, :attending, :diet, :songs, :notes
|
||||
)
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user