counter fixes

This commit is contained in:
2014-03-10 10:10:54 +01:00
parent a2ce77e9e1
commit c4e002104c
6 changed files with 89 additions and 36 deletions
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 34 KiB

+1 -2
View File
@@ -202,8 +202,7 @@ class UserController < ApplicationController
render json: json_response(list_active: false) render json: json_response(list_active: false)
return return
else else
list_obj = list.as_json.merge(list_active: list.active? ).merge(list.join_requests_as_json) render json: json_response(list.serialized_with_status_join_requests_and_supplier_counters)
render json: json_response(list_obj)
end end
else else
render json: json_response(not_present: true) render json: json_response(not_present: true)
+12 -3
View File
@@ -326,9 +326,18 @@ class List
def with_orders_and_join_requests_and_supplier_info_as_json def with_orders_and_join_requests_and_supplier_info_as_json
with_orders_and_join_requests_as_json.merge( with_orders_and_join_requests_as_json.merge(
supplier_name: supplier.name, supplier_name: supplier.name,
supplier_orders_in_process_count: supplier.orders_in_process_count, ).merge(supplier_counter_info)
supplier_orders_placed_count: supplier.orders_placed_count end
)
def serialized_with_status_join_requests_and_supplier_counters
as_json.merge(list_active: active? ).merge(join_requests_as_json).merge(supplier_counter_info)
end
def supplier_counter_info
{
supplier_orders_in_process_count: Qwaiter::Counter.get(Supplier.orders_in_process_counter_key(supplier_id)),
supplier_orders_placed_count: Qwaiter::Counter.get(Supplier.orders_placed_counter_key(supplier_id))
}
end end
def has_active_orders? def has_active_orders?
+4 -7
View File
@@ -92,19 +92,16 @@ class Order
end end
def is_delivered! def is_delivered!
decrement_placed = placed? decrement_counter = placed? ? 'placed' : 'in_process'
self.state = 'delivered' self.state = 'delivered'
if save if save
orders_in_process_count = supplier.decrement_orders_in_process_count! reduced_count = supplier.public_send "decrement_orders_#{decrement_counter}_count!"
orders_placed_count = supplier.decrement_orders_placed_count! if decrement_placed
for user_id in list.user_ids for user_id in list.user_ids
broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id broadcast_user user_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_user user_id, 'orders_in_process_count', count: orders_in_process_count broadcast_user user_id, "orders_#{decrement_counter}_count", count: reduced_count
broadcast_user user_id, 'orders_placed_count', count: orders_placed_count if decrement_placed
end end
broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id broadcast_supplier supplier_id, 'order_being_delivered', id: id, list_id: list_id
broadcast_supplier supplier_id, 'orders_in_process_count', count: orders_in_process_count broadcast_supplier supplier_id, "orders_#{decrement_counter}_count", count: reduced_count
broadcast_supplier supplier_id, 'orders_placed_count', count: orders_placed_count if decrement_placed
end end
end end
+15 -6
View File
@@ -170,28 +170,37 @@ class Supplier
true true
end end
# COUNTER SECTION. Can be a concern in a future
def increment_orders_in_process_count! def increment_orders_in_process_count!
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_in_process" Qwaiter::Counter.incr self.class.orders_in_process_counter_key(id)
end end
def increment_orders_placed_count! def increment_orders_placed_count!
Qwaiter::Counter.incr "supplier_counter:#{id}:orders_placed" Qwaiter::Counter.incr self.class.orders_placed_counter_key(id)
end end
def decrement_orders_in_process_count! def decrement_orders_in_process_count!
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_in_process" Qwaiter::Counter.decr self.class.orders_in_process_counter_key(id)
end end
def decrement_orders_placed_count! def decrement_orders_placed_count!
Qwaiter::Counter.decr "supplier_counter:#{id}:orders_placed" Qwaiter::Counter.decr self.class.orders_placed_counter_key(id)
end end
def orders_in_process_count def orders_in_process_count
Qwaiter::Counter.get "supplier_counter:#{id}:orders_in_process" Qwaiter::Counter.get self.class.orders_in_process_counter_key(id)
end end
def orders_placed_count def orders_placed_count
Qwaiter::Counter.get "supplier_counter:#{id}:orders_placed" Qwaiter::Counter.get self.class.orders_placed_counter_key(id)
end
def self.orders_in_process_counter_key(id)
"supplier_counter:#{id}:orders_in_process"
end
def self.orders_placed_counter_key(id)
"supplier_counter:#{id}:orders_placed"
end end
def active_order_count def active_order_count
+4 -4
View File
@@ -87,13 +87,13 @@ describe Order do
end end
it 'decreases the orders_in_process count and communicates it to user' do it 'decreases the orders_in_process count and communicates it to user' do
expect{ order.is_delivered! }.to broadcast_to_user(user.id).message( 'orders_in_process_count' ).with(count: 6) expect{ order.is_delivered! }.to broadcast_to_user(user.id).message( 'orders_placed_count' ).with(count: 10)
supplier.orders_placed_count.should == 10 supplier.orders_in_process_count.should == 7 # should not be reduced
end end
it 'decreases the orders_in_process count and communicates it to supplier' do it 'decreases the orders_in_process count and communicates it to supplier' do
expect{ order.is_delivered! }.to broadcast_to_supplier(supplier.id).message( 'orders_in_process_count' ).with(count: 6) expect{ order.is_delivered! }.to broadcast_to_supplier(supplier.id).message( 'orders_placed_count' ).with(count: 10)
supplier.orders_placed_count.should == 10 supplier.orders_in_process_count.should == 7 # should not be reduced
end end
it 'does not decreases the placed orders count if the order is not placed' do it 'does not decreases the placed orders count if the order is not placed' do