Fix ordering product issues by reverting emberization of product ordering
This commit is contained in:
@@ -69,11 +69,12 @@ App.ApplicationController = Ember.Controller.extend
|
|||||||
orders_placed_count: (data)->
|
orders_placed_count: (data)->
|
||||||
@set 'list.supplier.orders_placed_count', data.count
|
@set 'list.supplier.orders_placed_count', data.count
|
||||||
new_order: (data)->
|
new_order: (data)->
|
||||||
return if @store.all('order').findProperty('id', data.order.id)
|
# return if @store.all('order').findProperty('id', data.order.id)
|
||||||
@store.pushPayload data
|
@store.pushPayload data
|
||||||
@store.findById('order', data.order.id).then (order)->
|
@store.findById('list', data.list.id).then (list)=> @set 'controllers.application.list', list
|
||||||
list = order.get('list')
|
# @store.findById('order', data.order.id).then (order)->
|
||||||
list.get('orders').addObject(order)
|
# list = order.get('list')
|
||||||
|
# list.get('orders').addObject(order)
|
||||||
|
|
||||||
|
|
||||||
setCurrentList: (callback)->
|
setCurrentList: (callback)->
|
||||||
|
|||||||
@@ -7,42 +7,35 @@ App.ProductOrdersController = Ember.ArrayController.extend
|
|||||||
product_orders: (->@get('model')).property('model')
|
product_orders: (->@get('model')).property('model')
|
||||||
showTotal: (-> if @get('model.length') && @get('model.length') > 1 then true else false ).property('model.length')
|
showTotal: (-> if @get('model.length') && @get('model.length') > 1 then true else false ).property('model.length')
|
||||||
actions:
|
actions:
|
||||||
clearProductOrders: ->
|
# clearProductOrders: ->
|
||||||
#TODO: make clearing of unpersisted product orders
|
# #TODO: make clearing of unpersisted product orders
|
||||||
@store.all('product_order').toArray().invoke 'eraseRecord'
|
# @get('product_orders').invoke 'eraseRecord'
|
||||||
orderProducts: ->
|
orderProducts: ->
|
||||||
table = @get('controllers.table.model')
|
# table = @get('controllers.table.model')
|
||||||
list = @get('controllers.application.list')
|
# list = @get('controllers.application.list')
|
||||||
order = @store.createRecord('order', list: list, table: table)
|
# order = @store.createRecord('order', list: list, table: table)
|
||||||
new_product_orders = @store.all('product_order').filterProperty('order', null)
|
# new_product_orders = @store.all('product_order').filterProperty('order', null)
|
||||||
order.get('product_orders').pushObjects(new_product_orders)
|
# order.get('product_orders').pushObjects(new_product_orders)
|
||||||
#error = @ajaxError (jqXHR)=>
|
#
|
||||||
#new_product_orders.invoke 'eraseRecord'
|
# order.save().then (response)=>
|
||||||
#@redirect_to 'index', message: 'order_could_not_be_processed'
|
# new_product_orders.invoke 'eraseRecord'
|
||||||
|
# if @get('controllers.application.list')
|
||||||
|
# @transitionToRoute 'active_list'
|
||||||
|
# else
|
||||||
|
# # Get list info from the server
|
||||||
|
# @get('controllers.application').setCurrentList ->
|
||||||
|
# @transitionToRoute 'active_list'
|
||||||
|
# , @ajaxError (jqXHR)=>
|
||||||
|
# new_product_orders.invoke 'eraseRecord'
|
||||||
|
# @redirect_to 'index', message: 'order_could_not_be_processed'
|
||||||
|
|
||||||
order.save().then (response)=>
|
|
||||||
new_product_orders.invoke 'eraseRecord'
|
|
||||||
if @get('controllers.application.list')
|
|
||||||
@transitionToRoute 'active_list'
|
|
||||||
else
|
|
||||||
# Get list info from the server
|
|
||||||
@get('controllers.application').setCurrentList ->
|
|
||||||
@transitionToRoute 'active_list'
|
|
||||||
, @ajaxError (jqXHR)=>
|
|
||||||
new_product_orders.invoke 'eraseRecord'
|
|
||||||
@redirect_to 'index', message: 'order_could_not_be_processed'
|
|
||||||
#orders = @store.all('product_order').toArray()
|
#orders = @store.all('product_order').toArray()
|
||||||
#data = orders.map( (order)->order.serialize() )
|
#data = @get('product_orders').map( (po)->po.serialize() )
|
||||||
#dataObject = {order: {}}
|
dataObject = order: {table_id: @get('controllers.table.model.id')}
|
||||||
#for product_order in data
|
@get('product_orders').forEach (product_order)-> dataObject['order'][product_order.get('product.id')] = product_order.get('quantity')
|
||||||
#dataObject['order'][product_order.product_id] = product_order.quantity
|
Ember.$.post "#{$data_host}/user/orders.json", dataObject
|
||||||
##$.ajax
|
@transitionToRoute 'active_list'
|
||||||
##url: Routes.user_order_selected_products_path()
|
@get('product_orders').invoke 'unloadRecord'
|
||||||
##type: "POST",
|
|
||||||
##data: JSON.stringify(dataObject),
|
|
||||||
##contentType: "application/json",
|
|
||||||
##dataType: 'json'
|
|
||||||
#orders.invoke 'unloadRecord'
|
|
||||||
|
|
||||||
removeProductOrder: (product_order)->
|
removeProductOrder: (product_order)->
|
||||||
product_order.eraseRecord()
|
product_order.eraseRecord()
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
hr.hide-for-medium-up
|
hr.hide-for-medium-up
|
||||||
if modelDisabled
|
|
||||||
a.tiny.button.right{action "clearProductOrders"} href="#" ×
|
|
||||||
.clearfix
|
.clearfix
|
||||||
.panel
|
.panel
|
||||||
ul.product-orders
|
ul.product-orders
|
||||||
|
|||||||
@@ -3,14 +3,21 @@ module Users
|
|||||||
respond_to :json
|
respond_to :json
|
||||||
|
|
||||||
# Used by the user Ember app
|
# Used by the user Ember app
|
||||||
|
# POST /user/orders
|
||||||
def create
|
def create
|
||||||
render json: {}, status: :unprocessable_entity and return unless params[:order].present? && params[:order][:product_orders].present?
|
# render json: {}, status: :unprocessable_entity and return unless params[:order].present? && params[:order][:product_orders].present?
|
||||||
converted_order = params[:order][:product_orders].each_with_object({}){|po, o| o[po[:product_id]] = po[:quantity] }
|
# converted_order = params[:order][:product_orders].each_with_object({}){|po, o| o[po[:product_id]] = po[:quantity] }
|
||||||
|
converted_order = params[:order]
|
||||||
|
table_id = params[:order].delete('table_id')
|
||||||
if list = current_user.active_list
|
if list = current_user.active_list
|
||||||
render json: {}, status: :not_acceptable and return unless list.supplier.open?
|
render json: {}, status: :not_acceptable and return unless list.supplier.open?
|
||||||
else
|
else
|
||||||
render json: {}, status: :unprocessable_entity and return unless params[:order][:table_id].present?
|
#TODO: More logic about creating a new list!!!!!, usercontroller table_info should become irrelevant
|
||||||
table = Table.find(params[:order][:table_id])
|
#NOTE: security bug here!!!!!!
|
||||||
|
# - supplier.open?
|
||||||
|
# - etc....
|
||||||
|
render json: {}, status: :unprocessable_entity and return unless table_id.present?
|
||||||
|
table = Table.find(table_id)
|
||||||
render json: {}, status: :not_acceptable and return unless table.supplier.open?
|
render json: {}, status: :not_acceptable and return unless table.supplier.open?
|
||||||
|
|
||||||
if table.occupied?
|
if table.occupied?
|
||||||
@@ -21,7 +28,8 @@ module Users
|
|||||||
list = List.from_table( table, current_user )
|
list = List.from_table( table, current_user )
|
||||||
end
|
end
|
||||||
order = list.place_order products: converted_order, user: current_user
|
order = list.place_order products: converted_order, user: current_user
|
||||||
render json: order, serializer: OrderSerializer
|
# render json: order, serializer: OrderSerializer
|
||||||
|
render nothing: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
+2
-2
@@ -274,8 +274,8 @@ class List
|
|||||||
|
|
||||||
|
|
||||||
# broadcast_users 'new_order', order: order.with_products_as_json, total_amount: price
|
# broadcast_users 'new_order', order: order.with_products_as_json, total_amount: price
|
||||||
broadcast_users 'new_order', OrderSerializer.new(order).as_json
|
broadcast_users 'new_order', UserExtendedListSerializer.new(order.list).as_json
|
||||||
broadcast_users 'orders_placed_count', count: orders_placed_count
|
# broadcast_users 'orders_placed_count', count: orders_placed_count
|
||||||
|
|
||||||
broadcast_supplier supplier.id, 'list_update', SupplierListSerializer.new(self).as_json
|
broadcast_supplier supplier.id, 'list_update', SupplierListSerializer.new(self).as_json
|
||||||
# broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
|
# broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ step "the user order should be created as a new order" do
|
|||||||
row = find(".order-row-#{@order.id}")
|
row = find(".order-row-#{@order.id}")
|
||||||
row['class'].should include 'placed'
|
row['class'].should include 'placed'
|
||||||
#page.should have_content 'Apple pie (1), Heineken beer (2)'
|
#page.should have_content 'Apple pie (1), Heineken beer (2)'
|
||||||
page.should have_content '1 x Apple pie'
|
page.should have_content '1 x Apple pie', count: 1
|
||||||
page.should have_content '2 x Heineken beer'
|
page.should have_content '2 x Heineken beer', count: 1
|
||||||
page.should have_content '€ 8.96'
|
page.should have_content '€ 8.96'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -59,9 +59,13 @@ Supplier
|
|||||||
- https://github.com/buytruckload/geonames_api
|
- https://github.com/buytruckload/geonames_api
|
||||||
- Section view
|
- Section view
|
||||||
- add order vinkjes (active, delivered) management to table actions (post release)
|
- add order vinkjes (active, delivered) management to table actions (post release)
|
||||||
|
- Add opening hours to settings with special cases
|
||||||
|
- Add broadcast to current users option
|
||||||
|
|
||||||
User
|
User
|
||||||
----
|
----
|
||||||
|
|
||||||
- Cleanup user controller
|
- Cleanup user controller
|
||||||
- Subscribe to general faye channels [':version', 'mozo']
|
- Subscribe to general faye channels [':version', 'mozo']
|
||||||
|
- Post order on Facebook
|
||||||
|
- Split bill by user
|
||||||
|
|||||||
Reference in New Issue
Block a user