Class: Spree::Api::V2::Storefront::PricingPreviewsController
- Inherits:
-
BaseController
- Object
- BaseController
- Spree::Api::V2::Storefront::PricingPreviewsController
- Defined in:
- app/controllers/spree/api/v2/storefront/pricing_previews_controller.rb
Instance Method Summary collapse
-
#default_resource_includes ⇒ Object
override.
-
#index ⇒ Object
GET /api/v2/tenant/pricing_previews.
-
#resource_serializer ⇒ Object
override.
Instance Method Details
#default_resource_includes ⇒ Object
override
42 43 44 |
# File 'app/controllers/spree/api/v2/storefront/pricing_previews_controller.rb', line 42 def default_resource_includes ['pricing_adjustments'] end |
#index ⇒ Object
GET /api/v2/tenant/pricing_previews
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/controllers/spree/api/v2/storefront/pricing_previews_controller.rb', line 7 def index permitted_preview_params = params.permit(SpreeCmCommissioner::PricingModels::OrderContext::PREVIEW_PERMITTED_PARAMS) order_context = SpreeCmCommissioner::PricingModels::OrderContext.load!(permitted_preview_params[:order_context]) pricing_models_updated_at = SpreeCmCommissioner::PricingModel.joins(:vendor) .where(spree_vendors: { tenant_id: nil }) .maximum(:updated_at) cache_key = 'pricing:preview:v2:' \ "#{Digest::SHA256.hexdigest(permitted_preview_params.to_json)}:" \ "#{pricing_models_updated_at.to_i}" cached_result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do result = SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context) if result.success? { success: true, payload: serialize_resource(result.value[:pricing_preview]).as_json } else { success: false, error: result.error.to_s } end end if cached_result[:success] render_serialized_payload { cached_result[:payload] } else render_error_payload(cached_result[:error], 422) end rescue ArgumentError => e render_error_payload(e., 422) end |
#resource_serializer ⇒ Object
override
47 48 49 |
# File 'app/controllers/spree/api/v2/storefront/pricing_previews_controller.rb', line 47 def resource_serializer SpreeCmCommissioner::V2::Storefront::PricingPreviewSerializer end |