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)->
|
||||
@set 'list.supplier.orders_placed_count', data.count
|
||||
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.findById('order', data.order.id).then (order)->
|
||||
list = order.get('list')
|
||||
list.get('orders').addObject(order)
|
||||
@store.findById('list', data.list.id).then (list)=> @set 'controllers.application.list', list
|
||||
# @store.findById('order', data.order.id).then (order)->
|
||||
# list = order.get('list')
|
||||
# list.get('orders').addObject(order)
|
||||
|
||||
|
||||
setCurrentList: (callback)->
|
||||
|
||||
@@ -7,42 +7,35 @@ App.ProductOrdersController = Ember.ArrayController.extend
|
||||
product_orders: (->@get('model')).property('model')
|
||||
showTotal: (-> if @get('model.length') && @get('model.length') > 1 then true else false ).property('model.length')
|
||||
actions:
|
||||
clearProductOrders: ->
|
||||
#TODO: make clearing of unpersisted product orders
|
||||
@store.all('product_order').toArray().invoke 'eraseRecord'
|
||||
# clearProductOrders: ->
|
||||
# #TODO: make clearing of unpersisted product orders
|
||||
# @get('product_orders').invoke 'eraseRecord'
|
||||
orderProducts: ->
|
||||
table = @get('controllers.table.model')
|
||||
list = @get('controllers.application.list')
|
||||
order = @store.createRecord('order', list: list, table: table)
|
||||
new_product_orders = @store.all('product_order').filterProperty('order', null)
|
||||
order.get('product_orders').pushObjects(new_product_orders)
|
||||
#error = @ajaxError (jqXHR)=>
|
||||
#new_product_orders.invoke 'eraseRecord'
|
||||
#@redirect_to 'index', message: 'order_could_not_be_processed'
|
||||
# table = @get('controllers.table.model')
|
||||
# list = @get('controllers.application.list')
|
||||
# order = @store.createRecord('order', list: list, table: table)
|
||||
# new_product_orders = @store.all('product_order').filterProperty('order', null)
|
||||
# order.get('product_orders').pushObjects(new_product_orders)
|
||||
#
|
||||
# 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'
|
||||
|
||||
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()
|
||||
#data = orders.map( (order)->order.serialize() )
|
||||
#dataObject = {order: {}}
|
||||
#for product_order in data
|
||||
#dataObject['order'][product_order.product_id] = product_order.quantity
|
||||
##$.ajax
|
||||
##url: Routes.user_order_selected_products_path()
|
||||
##type: "POST",
|
||||
##data: JSON.stringify(dataObject),
|
||||
##contentType: "application/json",
|
||||
##dataType: 'json'
|
||||
#orders.invoke 'unloadRecord'
|
||||
#data = @get('product_orders').map( (po)->po.serialize() )
|
||||
dataObject = order: {table_id: @get('controllers.table.model.id')}
|
||||
@get('product_orders').forEach (product_order)-> dataObject['order'][product_order.get('product.id')] = product_order.get('quantity')
|
||||
Ember.$.post "#{$data_host}/user/orders.json", dataObject
|
||||
@transitionToRoute 'active_list'
|
||||
@get('product_orders').invoke 'unloadRecord'
|
||||
|
||||
removeProductOrder: (product_order)->
|
||||
product_order.eraseRecord()
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
hr.hide-for-medium-up
|
||||
if modelDisabled
|
||||
a.tiny.button.right{action "clearProductOrders"} href="#" ×
|
||||
.clearfix
|
||||
.panel
|
||||
ul.product-orders
|
||||
|
||||
@@ -3,14 +3,14 @@ if product_orders
|
||||
a.tiny.button.right{action clearProductOrders} href="#" x
|
||||
h4
|
||||
= t 'models.table'
|
||||
|
|
||||
|
|
||||
= number
|
||||
.panel
|
||||
ul.product-orders
|
||||
each product_order in product_orders
|
||||
li
|
||||
= product_order.quantity
|
||||
| x
|
||||
| x
|
||||
= product_order.product.name
|
||||
span.currency=currency product_order.total
|
||||
else
|
||||
|
||||
@@ -3,14 +3,21 @@ module Users
|
||||
respond_to :json
|
||||
|
||||
# Used by the user Ember app
|
||||
# POST /user/orders
|
||||
def create
|
||||
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] }
|
||||
# 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]
|
||||
table_id = params[:order].delete('table_id')
|
||||
if list = current_user.active_list
|
||||
render json: {}, status: :not_acceptable and return unless list.supplier.open?
|
||||
else
|
||||
render json: {}, status: :unprocessable_entity and return unless params[:order][:table_id].present?
|
||||
table = Table.find(params[:order][:table_id])
|
||||
#TODO: More logic about creating a new list!!!!!, usercontroller table_info should become irrelevant
|
||||
#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?
|
||||
|
||||
if table.occupied?
|
||||
@@ -21,7 +28,8 @@ module Users
|
||||
list = List.from_table( table, current_user )
|
||||
end
|
||||
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
|
||||
|
||||
+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', OrderSerializer.new(order).as_json
|
||||
broadcast_users 'orders_placed_count', count: orders_placed_count
|
||||
broadcast_users 'new_order', UserExtendedListSerializer.new(order.list).as_json
|
||||
# broadcast_users 'orders_placed_count', count: orders_placed_count
|
||||
|
||||
broadcast_supplier supplier.id, 'list_update', SupplierListSerializer.new(self).as_json
|
||||
# broadcast_supplier supplier.id, 'new_order', OrderSerializer.new(order)
|
||||
|
||||
Reference in New Issue
Block a user