basic layout template
This commit is contained in:
@@ -3,11 +3,10 @@ class Order < ApplicationRecord
|
||||
before_save :update_products_and_quantity_count
|
||||
|
||||
belongs_to :customer
|
||||
has_many :order_items, inverse_of: :order
|
||||
has_many :dining_ins
|
||||
has_many :order_items, autosave: true , inverse_of: :order
|
||||
|
||||
#internal references attributes for business logic control
|
||||
attr_accessor :items, :guest, :table_id, :new_booking, :booking_type
|
||||
attr_accessor :items, :guest, :table_id, :new_booking, :booking_type, :employee_name
|
||||
|
||||
|
||||
#Main Controller method to create new order - validate all inputs and generate new order
|
||||
@@ -19,26 +18,40 @@ class Order < ApplicationRecord
|
||||
# sub_order_items : [],
|
||||
# }
|
||||
def generate
|
||||
booking = nil
|
||||
|
||||
if self.new_booking
|
||||
booking = Booking.create({:dining_facility_id => :table_id, })
|
||||
|
||||
self.adding_line_items
|
||||
self.save!
|
||||
booking = Booking.create({:dining_facility_id => self.table_id,:type => "TableBooking",
|
||||
:checkin_at => Time.now.utc, :checkin_by => self.employee_name,
|
||||
:booking_status => "new" })
|
||||
else
|
||||
|
||||
|
||||
booking = Booking.find(self.booking_id)
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
if booking.type = "Table"
|
||||
#add to table_booking_order
|
||||
tbo = TableBookingOrder.create({:table_booking => booking, :order => self})
|
||||
elsif booking.type = "Room"
|
||||
#add to room_booking_order
|
||||
rbo = RoomBookingOrder.create({:table_booking => booking, :order => self})
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
booking.save!
|
||||
|
||||
self.default_values
|
||||
|
||||
if self.save!
|
||||
|
||||
self.adding_line_items
|
||||
|
||||
#Add Order Table and Room relation afrer order creation
|
||||
if booking.type = "TableBooking"
|
||||
#add to table_booking_order
|
||||
tbo = TableBookingOrder.create({:table_booking_id => booking.id, :order => self})
|
||||
elsif booking.type = "RoomBooking"
|
||||
#add to room_booking_order
|
||||
rbo = RoomBookingOrder.create({:room_booking_id => booking.id, :order => self})
|
||||
end
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
|
||||
return false
|
||||
|
||||
end
|
||||
|
||||
#Main Method - to update order / add items
|
||||
@@ -46,24 +59,33 @@ class Order < ApplicationRecord
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
def validate_api_inputs
|
||||
|
||||
end
|
||||
|
||||
def adding_line_items
|
||||
|
||||
|
||||
if self.items
|
||||
#loop to add all items to order
|
||||
self.items.each do |item|
|
||||
self.order_items.add( OrderItem.processs_item(item) )
|
||||
self.order_items.add( OrderItem.processs_item(item, self.id, self.employee_name) )
|
||||
end
|
||||
return true
|
||||
else
|
||||
self.errors.add(:order_items, :blank, message: "Order items cannot be blank")
|
||||
return false
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
def default_values
|
||||
self.customer = Customer.find(1) if self.customer_id.nil?
|
||||
self.source = "emenu" if self.source.nil?
|
||||
self.order_type = "dine-in" if self.order_type.nil?
|
||||
|
||||
end
|
||||
|
||||
private
|
||||
def validate_api_inputs
|
||||
|
||||
end
|
||||
|
||||
def set_order_date
|
||||
self.date = Time.now.utc
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user