Fix and implement supplier counters
This commit is contained in:
+11
-3
@@ -270,7 +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!
|
||||
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
|
||||
@@ -281,11 +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
|
||||
broadcast_user user_id, 'orders_placed_count', count: orders_placed_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
|
||||
broadcast_supplier supplier.id, 'orders_placed_count', count: orders_placed_count
|
||||
order
|
||||
end
|
||||
|
||||
@@ -323,6 +323,14 @@ class List
|
||||
@with_orders_and_join_requests_as_json = with_orders_as_json.merge(join_requests_as_json)
|
||||
end
|
||||
|
||||
def with_orders_and_join_requests_and_supplier_info_as_json
|
||||
with_orders_and_join_requests_as_json.merge(
|
||||
supplier_name: supplier.name,
|
||||
supplier_orders_in_process_count: supplier.orders_in_process_count,
|
||||
supplier_orders_placed_count: supplier.orders_placed_count
|
||||
)
|
||||
end
|
||||
|
||||
def has_active_orders?
|
||||
Order.count_active_for_supplier_and_list(supplier_id, id) > 0
|
||||
end
|
||||
|
||||
+7
-7
@@ -78,29 +78,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!
|
||||
orders_in_process_count = supplier.increment_orders_in_process_count!
|
||||
orders_placed_count = supplier.decrement_orders_placed_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
|
||||
broadcast_user user_id, 'orders_placed_count', count: orders_placed_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
|
||||
broadcast_supplier supplier_id, 'orders_placed_count', count: orders_placed_count
|
||||
end
|
||||
end
|
||||
|
||||
def is_delivered!
|
||||
self.state = 'delivered'
|
||||
if save
|
||||
orders_delivered_count = supplier.decrement_orders_delivered_count!
|
||||
orders_in_process_count = supplier.decrement_orders_in_process_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
|
||||
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_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
|
||||
broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+15
-12
@@ -116,6 +116,9 @@ class Supplier
|
||||
end
|
||||
|
||||
def self.reset_counters!
|
||||
|
||||
Qwaiter::Couchbase.design_doc('supplier').counters(reduce: false).each{|counter| Qwaiter::Counter.set counter.key, 0}
|
||||
|
||||
spec = Order.by_supplier_id_and_state(reduce: true, group_level: 2)
|
||||
reset_order_counters_with_spec spec
|
||||
end
|
||||
@@ -137,8 +140,8 @@ class Supplier
|
||||
Array.wrap(results['rows']).each do |result|
|
||||
supplier_id, state = result['key']
|
||||
case state
|
||||
when 'placed' then Qwaiter::Counter.set "supplier:#{supplier_id}:orders_in_process", result['value']
|
||||
when 'active' then Qwaiter::Counter.set "supplier:#{supplier_id}:orders_delivered", result['value']
|
||||
when 'placed' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_placed", result['value']
|
||||
when 'active' then Qwaiter::Counter.set "supplier_counter:#{supplier_id}:orders_in_process", result['value']
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -168,31 +171,31 @@ class Supplier
|
||||
end
|
||||
|
||||
def increment_orders_in_process_count!
|
||||
Qwaiter::Counter.incr "supplier:#{id}:orders_in_process"
|
||||
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_in_process"
|
||||
end
|
||||
|
||||
def increment_orders_delivered_count!
|
||||
Qwaiter::Counter.incr "supplier:#{id}:orders_delivered"
|
||||
def increment_orders_placed_count!
|
||||
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_placed"
|
||||
end
|
||||
|
||||
def decrement_orders_in_process_count!
|
||||
Qwaiter::Counter.decr "supplier:#{id}:orders_in_process"
|
||||
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_in_process"
|
||||
end
|
||||
|
||||
def decrement_orders_delivered_count!
|
||||
Qwaiter::Counter.decr "supplier:#{id}:orders_delivered"
|
||||
def decrement_orders_placed_count!
|
||||
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_placed"
|
||||
end
|
||||
|
||||
def orders_in_process_count
|
||||
Qwaiter::Counter.get "supplier:#{id}:orders_in_process"
|
||||
Qwaiter::Counter.get "supplier_counter:#{id}:orders_in_process"
|
||||
end
|
||||
|
||||
def orders_delivered_count
|
||||
Qwaiter::Counter.get "supplier:#{id}:orders_delivered"
|
||||
def orders_placed_count
|
||||
Qwaiter::Counter.get "supplier_counter:#{id}:orders_placed"
|
||||
end
|
||||
|
||||
def active_order_count
|
||||
orders_in_process_count + orders_delivered_count
|
||||
orders_in_process_count + orders_placed_count
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
Reference in New Issue
Block a user