2017-09-29 13:27:03 +02:00
|
|
|
class CustomWizard::StepsController < ApplicationController
|
|
|
|
before_action :ensure_logged_in
|
2017-09-25 16:47:40 +02:00
|
|
|
|
|
|
|
def update
|
2017-11-02 08:41:14 +01:00
|
|
|
field_ids = CustomWizard::Wizard.field_ids(params[:wizard_id], params[:step_id])
|
|
|
|
permitted = params.permit(:step_id, :wizard_id, fields: field_ids.map(&:to_sym)) if field_ids.present?
|
|
|
|
|
|
|
|
wizard = CustomWizard::Builder.new(current_user, permitted[:wizard_id].underscore).build
|
|
|
|
updater = wizard.create_updater(permitted[:step_id], permitted[:fields])
|
2017-09-25 16:47:40 +02:00
|
|
|
updater.update
|
|
|
|
|
|
|
|
if updater.success?
|
2017-10-05 02:36:46 +02:00
|
|
|
result = success_json
|
|
|
|
result.merge!(updater.result) if updater.result
|
2017-09-25 16:47:40 +02:00
|
|
|
result[:refresh_required] = true if updater.refresh_required?
|
|
|
|
render json: result
|
|
|
|
else
|
|
|
|
errors = []
|
|
|
|
updater.errors.messages.each do |field, msg|
|
|
|
|
errors << { field: field, description: msg.join }
|
|
|
|
end
|
|
|
|
render json: { errors: errors }, status: 422
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|