PageRenderTime 1086ms CodeModel.GetById 42ms RepoModel.GetById 0ms app.codeStats 0ms

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

https://github.com/eraserx99/spree
Ruby | 78 lines | 65 code | 12 blank | 1 comment | 3 complexity | 858f1d7fdc9da409bde9164872bc2198 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. module Spree
  2. module Api
  3. module V1
  4. class OrdersController < Spree::Api::V1::BaseController
  5. before_filter :map_nested_attributes, :only => [:create, :update]
  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.page(params[:page])
  10. end
  11. def show
  12. authorize! :read, order
  13. end
  14. def search
  15. @orders = Order.ransack(params[:q]).result.page(params[:page])
  16. render :index
  17. end
  18. def create
  19. @order = Order.build_from_api(current_api_user, @nested_params)
  20. next!
  21. end
  22. def update
  23. authorize! :update, Order
  24. if order.update_attributes(@nested_params)
  25. render :show
  26. else
  27. invalid_resource!(order)
  28. end
  29. end
  30. def address
  31. order.build_ship_address(params[:shipping_address])
  32. order.build_bill_address(params[:billing_address])
  33. next!
  34. end
  35. def delivery
  36. begin
  37. ShippingMethod.find(params[:shipping_method_id])
  38. rescue ActiveRecord::RecordNotFound
  39. render :invalid_shipping_method, :status => 422
  40. else
  41. order.update_attribute(:shipping_method_id, params[:shipping_method_id])
  42. next!
  43. end
  44. end
  45. def cancel
  46. order.cancel!
  47. render :show
  48. end
  49. private
  50. def map_nested_attributes
  51. @nested_params = map_nested_attributes_keys Order, params[:order]
  52. end
  53. def order
  54. @order ||= Order.find_by_number!(params[:id])
  55. end
  56. def next!
  57. if @order.valid? && @order.next
  58. render :show, :status => 200
  59. else
  60. render :could_not_transition, :status => 422
  61. end
  62. end
  63. end
  64. end
  65. end
  66. end