Class: Spree::Api::V2::Tenant::PricingPreviewsController
- Inherits:
-
BaseController
- Object
- ResourceController
- BaseController
- Spree::Api::V2::Tenant::PricingPreviewsController
- Defined in:
- app/controllers/spree/api/v2/tenant/pricing_previews_controller.rb
Instance Method Summary collapse
-
#index ⇒ Object
GET /api/v2/tenant/pricing_previews.
Methods inherited from BaseController
#render_serialized_payload, #require_tenant, #scope
Instance Method Details
#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 |
# File 'app/controllers/spree/api/v2/tenant/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: current_tenant.id }) .maximum(:updated_at) cache_key = 'pricing:preview:v2:' \ "#{Digest::SHA256.hexdigest(permitted_preview_params.to_json)}:" \ "#{pricing_models_updated_at.to_i}" result = Rails.cache.fetch(cache_key, expires_in: 60.seconds) do SpreeCmCommissioner::PricingModels::Preview.call(order_context: order_context) end if result.success? render_serialized_payload { serialize_resource(result.value[:pricing_preview]) } else render_error_payload(result.error, 422) end rescue ArgumentError => e render_error_payload(e., 422) end |