Add couchbase with modifications, formalize broadcaster and make testable and some other stuff

This commit is contained in:
2014-03-06 18:08:39 +01:00
parent 3f117c76b0
commit 0e7a39b819
28 changed files with 456 additions and 35 deletions
+3
View File
@@ -270,6 +270,7 @@ class List
return false unless user
order = Order.create list: self, supplier: supplier, user: user, section_id: section_id
return unless order.id
orders_in_process_count = supplier.increment_orders_in_process_count!
loaded_products = self.class.database.load_document products.keys
products.each do |product_id, quantity|
quantity = quantity.to_i
@@ -280,9 +281,11 @@ class List
save
for user_id in user_ids
broadcast_user user_id, 'new_order', order: order.with_products_as_json, total_amount: price
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count
end
broadcast_supplier supplier.id, 'list_update', active_model_serializer.new(self).as_json
broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
broadcast_supplier supplier.id, 'orders_in_process_count', count: orders_in_process_count
order
end
+9
View File
@@ -77,20 +77,29 @@ class Order
def is_being_processed!
self.state = 'active'
if save
orders_in_process_count = supplier.decrement_orders_in_process_count!
orders_delivered_count = supplier.increment_orders_delivered_count!
for user_id in list.user_ids
broadcast_user user_id, 'order_being_processed', id: id, list_id: list_id
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count
broadcast_user user_id, 'orders_delivered_count', count: orders_delivered_count
end
broadcast_supplier supplier_id, 'order_being_processed', id: id, list_id: list_id
broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count
broadcast_supplier supplier_id, 'orders_delivered_count', count: orders_delivered_count
end
end
def is_delivered!
self.state = 'delivered'
if save
orders_delivered_count = supplier.decrement_orders_delivered_count!
for user_id in list.user_ids
broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_user user_id, 'orders_delivered_count', count: orders_delivered_count
end
broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_supplier supplier_id, 'orders_delivered_count', count: orders_delivered_count
end
end
+29
View File
@@ -137,6 +137,35 @@ class Supplier
def week_starts_on_monday?
true
end
def increment_orders_in_process_count!
Qwaiter::Counter.incr "supplier:#{id}:orders_in_process"
end
def increment_orders_delivered_count!
Qwaiter::Counter.incr "supplier:#{id}:orders_delivered"
end
def decrement_orders_in_process_count!
Qwaiter::Counter.decr "supplier:#{id}:orders_in_process"
end
def decrement_orders_delivered_count!
Qwaiter::Counter.decr "supplier:#{id}:orders_delivered"
end
def orders_in_process_count
Qwaiter::Counter.get "supplier:#{id}:orders_in_process"
end
def orders_delivered_count
Qwaiter::Counter.get "supplier:#{id}:orders_delivered"
end
def active_order_count
orders_in_process_count + orders_delivered_count
end
private
def add_section_on_create