|
|
|
@@ -7,7 +7,7 @@ class List
|
|
|
|
|
property :needs_help, type: :boolean, default: false
|
|
|
|
|
property :needs_payment, type: :boolean, default: false
|
|
|
|
|
property :closed_at, type: Time
|
|
|
|
|
property :join_requests, type: Array, default: []
|
|
|
|
|
property :join_request_user_ids, type: Array, default: []
|
|
|
|
|
property :price, type: Float
|
|
|
|
|
property :is_paid, type: :boolean, default: false
|
|
|
|
|
property :paid_at, type: Time
|
|
|
|
@@ -177,6 +177,7 @@ class List
|
|
|
|
|
|
|
|
|
|
def is_paid!
|
|
|
|
|
self.is_paid = true
|
|
|
|
|
self.needs_payment = false
|
|
|
|
|
self.paid_at ||= Time.now
|
|
|
|
|
if save
|
|
|
|
|
broadcast_users 'list_is_paid', id: id
|
|
|
|
@@ -192,18 +193,18 @@ class List
|
|
|
|
|
self.section_id = to_table.section_id
|
|
|
|
|
if save
|
|
|
|
|
# Update the section of an order
|
|
|
|
|
orders.each do |order|
|
|
|
|
|
order.section_id = self.section_id
|
|
|
|
|
order.save
|
|
|
|
|
end
|
|
|
|
|
#orders.each do |order|
|
|
|
|
|
#order.section_id = self.section_id
|
|
|
|
|
#order.save
|
|
|
|
|
#end
|
|
|
|
|
broadcast_users 'list_changed_table', list: as_json, section_title: to_table.section.try(:title), from_table_id: from_table
|
|
|
|
|
broadcast_supplier supplier_id, 'list_changed_table', list: as_json, section_title: to_table.section.try(:title), from_table_id: from_table
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def approve_join_request_for_user!(user)
|
|
|
|
|
if join_requests.include?(user.id)
|
|
|
|
|
join_requests.delete(user.id)
|
|
|
|
|
if join_request_user_ids.include?(user.id)
|
|
|
|
|
join_request_user_ids.delete(user.id)
|
|
|
|
|
user.active_list_id = self.id
|
|
|
|
|
add_user(user)
|
|
|
|
|
user.save
|
|
|
|
@@ -215,7 +216,7 @@ class List
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def unlink_user(user)
|
|
|
|
|
changed = join_requests.delete(user.id)
|
|
|
|
|
changed = join_request_user_ids.delete(user.id)
|
|
|
|
|
changed ||= Array.wrap(user_ids).delete(user.id)
|
|
|
|
|
if user.active_list_id == id
|
|
|
|
|
user.active_list_id = nil
|
|
|
|
@@ -225,8 +226,8 @@ class List
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def send_table_join_request_for_user!(requester)
|
|
|
|
|
unless join_requests.include?(requester.id)
|
|
|
|
|
self.join_requests << requester.id
|
|
|
|
|
unless join_request_user_ids.include?(requester.id)
|
|
|
|
|
self.join_request_user_ids << requester.id
|
|
|
|
|
self.is_dirty
|
|
|
|
|
if save
|
|
|
|
|
for user in users
|
|
|
|
@@ -237,8 +238,8 @@ class List
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def reject_join_request_for_user!(user_id)
|
|
|
|
|
if join_requests.include?(user_id)
|
|
|
|
|
join_requests.delete(user_id)
|
|
|
|
|
if join_request_user_ids.include?(user_id)
|
|
|
|
|
join_request_user_ids.delete(user_id)
|
|
|
|
|
self.is_dirty
|
|
|
|
|
if save
|
|
|
|
|
broadcast_user user_id, 'join_request_rejected'
|
|
|
|
@@ -269,14 +270,14 @@ class List
|
|
|
|
|
|
|
|
|
|
def place_order(products, user: nil, employee: nil)
|
|
|
|
|
return false unless products.any?
|
|
|
|
|
order = Order.create list: self, supplier: supplier, user: user, employee: employee, section_id: section_id
|
|
|
|
|
order = Order.create list: self, supplier: supplier, user: user, employee: employee, section_id: section_id, table_id: table_id
|
|
|
|
|
return unless order.id
|
|
|
|
|
orders_placed_count = supplier.increment_orders_placed_count!
|
|
|
|
|
loaded_products = self.class.database.load_document products.keys
|
|
|
|
|
products.each do |product_id, quantity|
|
|
|
|
|
quantity = quantity.to_i
|
|
|
|
|
product = loaded_products.find{|p| p.id == product_id} # to get the price
|
|
|
|
|
ProductOrder.create order: order, product_id: product_id, quantity: quantity, price: product.price if quantity > 0
|
|
|
|
|
ProductOrder.create order: order, product_id: product_id, quantity: quantity, price: product.price, product_name: product.name if quantity > 0
|
|
|
|
|
end
|
|
|
|
|
set_price
|
|
|
|
|
save
|
|
|
|
@@ -366,18 +367,23 @@ class List
|
|
|
|
|
|
|
|
|
|
# Return a join requests object in the form of:
|
|
|
|
|
# {join_request: [{user_id: '1saf3...', user_email: 'info@qwaiter.com'}, [....]]}
|
|
|
|
|
# DEPRICATED IN EMBER
|
|
|
|
|
def join_requests_as_json
|
|
|
|
|
return @join_requests_as_json if @join_requests_as_json.present?
|
|
|
|
|
h = {join_requests: []}
|
|
|
|
|
# Handle join requests
|
|
|
|
|
if join_requests.any?
|
|
|
|
|
for user in self.class.database.load_document(join_requests)
|
|
|
|
|
if join_request_user_ids.any?
|
|
|
|
|
for user in self.class.database.load_document(join_request_user_ids)
|
|
|
|
|
h[:join_requests] << {user_id: user.id, user_email: user.email}
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
@join_requests_as_json = h
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def join_requests
|
|
|
|
|
@join_requests ||= join_request_user_ids.any? ? self.class.database.load_document(join_request_user_ids).map{|user| JoinRequest.new(user: user, list: self) } : []
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def product_categories
|
|
|
|
|
supplier.product_categories
|
|
|
|
|
end
|
|
|
|
|