Skip to content

Commit

Permalink
ref: reservations controller
Browse files Browse the repository at this point in the history
  • Loading branch information
dgpangan committed Feb 19, 2023
1 parent c67711f commit 38e75de
Showing 1 changed file with 27 additions and 6 deletions.
33 changes: 27 additions & 6 deletions app/controllers/reservations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,22 @@ class ReservationsController < ApplicationController

def create
data = parse_data(JSON.parse(request.raw_post).smash)
Guest.upsert(data[:guest])
guest = Guest.find_by(email: data[:guest][:email])
data[:reservation][:guest_id] = guest.id
Reservation.upsert(data[:reservation])
reservation = Reservation.find_by(code: data[:reservation][:code])
render json: { guest:, reservation: }

guest = create_or_update_guest(data[:guest])

unless guest.valid?
render json: { success: false, errors: guest.errors }
return
end

reservation = create_or_update_reservation(data[:reservation], guest.id)

unless reservation.valid?
render json: { success: false, errors: reservation.errors }
return
end

render json: { success: true, guest:, reservation: }
end

private
Expand All @@ -30,4 +40,15 @@ def parse_data(data)
reservation[:guest_id] = guest[:id]
{ reservation:, guest: }
end

def create_or_update_guest(data)
Guest.upsert(data)
Guest.find_by(email: data[:email])
end

def create_or_update_reservation(data, guest_id)
data[:guest_id] = guest_id
Reservation.upsert(data)
Reservation.find_by(code: data[:code])
end
end

0 comments on commit 38e75de

Please sign in to comment.