Add couchbase with modifications, formalize broadcaster and make testable and some other stuff
This commit is contained in:
@@ -12,15 +12,11 @@ private
|
||||
end
|
||||
|
||||
def broadcast_user(uid, event, data = {})
|
||||
message = {channel: "/user/#{uid}", data: {event: event, data: data}}
|
||||
uri = URI.parse(event_host)
|
||||
Net::HTTP.post_form(uri, :message => message.to_json)
|
||||
Qwaiter.broadcast_user uid, event, data
|
||||
end
|
||||
|
||||
def broadcast_supplier(sid, event, data = {})
|
||||
message = {channel: "/supplier/#{sid}", data: {event: event, data: data}}
|
||||
uri = URI.parse(event_host)
|
||||
Net::HTTP.post_form(uri, :message => message.to_json)
|
||||
Qwaiter.broadcast_supplier sid, event, data
|
||||
end
|
||||
|
||||
def set_locale
|
||||
@@ -64,13 +60,6 @@ private
|
||||
end
|
||||
alias json_notice js_notice
|
||||
|
||||
# Return the hostname of the event server
|
||||
def event_host
|
||||
#TODO: do not do and environment check, its ugly!
|
||||
"http://#{Rails.env.production? ? 'events.qwaiter.com' : 'localhost'}:9296/faye"
|
||||
end
|
||||
helper_method :event_host
|
||||
|
||||
def show_404
|
||||
respond_to do |format|
|
||||
format.html { render 'dashboard/404', layout: true, status: 404}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,14 +20,14 @@ html lang="en"
|
||||
javascript:
|
||||
var QMobile, Qwaiter, Quser;
|
||||
var data_host = 'http://data.qwaiter.com';
|
||||
var event_host = '#{event_host}';
|
||||
var event_host = '#{Qwaiter.event_host}';
|
||||
var $asset_path = '##assets_path##';
|
||||
var Qstorage = localStorage;
|
||||
- else
|
||||
javascript:
|
||||
var QMobile, Qwaiter, Quser;
|
||||
var data_host = 'http://data.qwaiter.com';
|
||||
var event_host = '#{event_host}';
|
||||
var event_host = '#{Qwaiter.event_host}';
|
||||
var $asset_path = '/assets/';
|
||||
var Qstorage = localStorage;
|
||||
#{user_dynamic_data_host}
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
var $locale = '<%= I18n.locale %>';
|
||||
var supplier_id = '<%= current_supplier.id %>';
|
||||
var data_host = '';
|
||||
var event_host = '<%= event_host %>';
|
||||
var event_host = '<%= Qwaiter.event_host %>';
|
||||
var datepicker_options = {dateFormat: 'yy-mm-dd', firstDay: <%= current_supplier.week_starts_on_monday? ? 1 : 0 %>};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user