Class: Spree::Api::V2::Storefront::Account::GuestDynamicFieldsController

Inherits:
ResourceController
  • Object
show all
Defined in:
app/controllers/spree/api/v2/storefront/account/guest_dynamic_fields_controller.rb

Instance Method Summary collapse

Instance Method Details

#update_dynamic_fieldObject



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
# File 'app/controllers/spree/api/v2/storefront/account/guest_dynamic_fields_controller.rb', line 10

def update_dynamic_field
  phase = params[:phase]

  return render_error_payload('Invalid phase', 422) unless %w[pre_registration post_registration].include?(phase)

  begin
    fields = dynamic_fields_params
  rescue ActionController::ParameterMissing
    return render_error_payload('No dynamic fields provided', 422)
  end

  return render_error_payload('No dynamic fields provided', 422) if fields.blank?

  ActiveRecord::Base.transaction do
    fields.each do |field|
      process_dynamic_field(field)
    end

    @guest.save_and_move_to_next_stage
  end

  render_serialized_payload { serialize_guest(@guest) }
rescue ActiveRecord::RecordInvalid => e
  render_error_payload(e.record.errors, 422)
rescue ActiveRecord::RecordNotFound => e
  render_error_payload(e.message, 404)
end