Files
mozo-backend/app/models/list.rb
T
2012-08-24 16:20:03 +02:00

49 lines
1.2 KiB
Ruby

class List
include SimplyStored::Couch
property :state, default: 'active' # active, #closed
property :needs_help, type: :boolean, default: false
property :needs_payment, type: :boolean, default: false
property :closed_at, type: Time
has_many :orders, dependent: :destroy
belongs_to :table
has_and_belongs_to_many :users, storing_keys: true
validates :table_id, presence: true
def close!
orders.map(&:close!)
self.state = 'closed'
self.closed_at = Time.now
save
end
def supplier
table.supplier
end
def table_number
@table_number ||= table.number
end
def active?
state == 'active'
end
def place_order(products)
return unless products.any?
@order = Order.create list: self, supplier: supplier
return unless @order.id
loaded_products = self.class.database.load_document products.keys
products.each do |product_id, number|
number = number.to_i
product = loaded_products.find{|p| p.id == product_id} # to get the price
ProductOrder.create order: @order, product_id: product_id, amount: number, price: product.price if number > 0
end
end
def as_json
super.merge(table_number: table_number)
end
end