PageRenderTime 1189ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/api/app/controllers/spree/api/orders_controller.rb

https://github.com/pageman/spree
Ruby | 68 lines | 55 code | 12 blank | 1 comment | 5 complexity | 0f4862bac73f3ddbd7c8a946a9e56681 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. module Spree
  2. module Api
  3. class OrdersController < Spree::Api::BaseController
  4. respond_to :json
  5. before_filter :authorize_read!, :except => [:index, :search, :create]
  6. def index
  7. # should probably look at turning this into a CanCan step
  8. raise CanCan::AccessDenied unless current_api_user.has_spree_role?("admin")
  9. @orders = Order.ransack(params[:q]).result.page(params[:page]).per(params[:per_page])
  10. respond_with(@orders)
  11. end
  12. def show
  13. respond_with(@order)
  14. end
  15. def create
  16. @order = Order.build_from_api(current_api_user, nested_params)
  17. respond_with(order, :default_template => :show, :status => 201)
  18. end
  19. def update
  20. authorize! :update, Order
  21. if order.update_attributes(nested_params)
  22. order.update!
  23. respond_with(order, :default_template => :show)
  24. else
  25. invalid_resource!(order)
  26. end
  27. end
  28. def cancel
  29. order.cancel!
  30. render :show
  31. end
  32. def empty
  33. order.line_items.destroy_all
  34. order.update!
  35. render :text => nil, :status => 200
  36. end
  37. private
  38. def nested_params
  39. map_nested_attributes_keys Order, params[:order] || {}
  40. end
  41. def order
  42. @order ||= Order.find_by_number!(params[:id])
  43. end
  44. def next!(options={})
  45. if @order.valid? && @order.next
  46. render :show, :status => options[:status] || 200
  47. else
  48. render :could_not_transition, :status => 422
  49. end
  50. end
  51. def authorize_read!
  52. authorize! :read, order
  53. end
  54. end
  55. end
  56. end