Class: Spree::Api::V2::Tenant::Transit::DraftOrdersController
- Inherits:
-
BaseController
- Object
- ResourceController
- BaseController
- Spree::Api::V2::Tenant::Transit::DraftOrdersController
- Defined in:
- app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb
Instance Method Summary collapse
- #build_legs(direction, legs_params) ⇒ Object
-
#create ⇒ Object
Creates a draft transit order for tenant.
-
#resource_serializer ⇒ Object
override.
Methods inherited from BaseController
#render_serialized_payload, #require_tenant, #scope
Instance Method Details
#build_legs(direction, legs_params) ⇒ Object
35 36 37 |
# File 'app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb', line 35 def build_legs(direction, legs_params) SpreeCmCommissioner::Transit::LegsBuilderService.new(direction: direction, legs_params: legs_params).call end |
#create ⇒ Object
Creates a draft transit order for tenant. Endpoint: POST /api/v2/tenant/transit/draft_orders Params:
-
outbound_date: Date of outbound transit (optional)
-
inbound_date: Date of inbound transit (optional)
-
outbound_legs: Array of outbound leg details (required)
-
inbound_legs: Array of inbound leg details (optional)
-
include_return: Whether to add the trip’s “return included” add-on as a line item (optional)
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb', line 15 def create @outbound_legs = params[:outbound_legs].is_a?(Array) && params[:outbound_legs].any? ? build_legs(:outbound, params[:outbound_legs]) : [] @inbound_legs = params[:inbound_legs].is_a?(Array) && params[:inbound_legs].any? ? build_legs(:inbound, params[:inbound_legs]) : [] result = SpreeCmCommissioner::TransitOrder::Create.call( outbound_date: params[:outbound_date]&.to_date, inbound_date: params[:inbound_date]&.to_date, outbound_legs: @outbound_legs, inbound_legs: @inbound_legs, user: spree_current_user, include_return: ActiveModel::Type::Boolean.new.cast(params[:include_return]) ) if result.success? render_serialized_payload { serialize_resource(result.value[:order]) } else render_error_payload(result.error) end end |
#resource_serializer ⇒ Object
override
40 41 42 |
# File 'app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb', line 40 def resource_serializer Spree::V2::Tenant::TransitCartSerializer end |