Conceptual architectural change for CLI user app

This commit is contained in:
2015-09-07 19:10:54 +02:00
parent 4ef7ecba41
commit 1caa488524
15 changed files with 163 additions and 140 deletions
+13 -9
View File
@@ -282,14 +282,14 @@ class List
state == 'closed'
end
def place_order(product_orders: [], user: nil, employee: nil)
def place_order(product_orders: [], user: nil, employee: nil, first_order: true)
return false unless product_orders.any?
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 product_orders.map{|po| po['product_id']}
loaded_products = self.class.database.load_document product_orders.map{|po| po['product_id'] || po['product']}
product_orders.each do |product_order|
next unless product = loaded_products.find{|p| p.id == product_order['product_id']} # to get the price
next unless product = loaded_products.find{|p| p.id == product_order['product_id'] or p.id == product_order['product']} # to get the price and current product name
quantity = product_order['quantity'].to_i
if quantity > 0
ProductOrder.create(
@@ -306,12 +306,16 @@ class List
save
# broadcast_users 'new_order', order: order.with_products_as_json, total_amount: price
broadcast_users 'new_order', Users::OrderSerializer.new(order).as_json
# broadcast_users 'orders_placed_count', count: orders_placed_count
broadcast_supplier supplier.id, 'list_update', Supplier::ListSerializer.new(self).as_json.merge(new_order_id: order.id)
# broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
if first_order
# broadcast_users 'orders_placed_count', count: orders_placed_count
broadcast_supplier supplier.id, 'list_update', Supplier::ListSerializer.new(self).as_json.merge(new_order_id: order.id)
# broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
else
# broadcast_users 'new_order', order: order.with_products_as_json, total_amount: price
user_payload = JSONAPI::Serializer.serialize(order, serializer: Users::OrderSerializer, include: %w[product_orders])
broadcast_users 'new_order', user_payload
broadcast_supplier supplier.id, 'list_update', Supplier::ListSerializer.new(self).as_json.merge(new_order_id: order.id)
end
broadcast_supplier supplier.id, 'orders_placed_count', count: orders_placed_count
order
end