1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- class CustomWizard::AdminController < ::ApplicationController
- before_action :ensure_logged_in
- before_action :ensure_admin
- def index
- render nothing: true
- end
- def field_types
- render json: { types: CustomWizard::FieldTypes.all }
- end
- def save
- params.require(:wizard)
- wizard = ::JSON.parse(params[:wizard])
- saved = false
- if wizard["existing_id"] && rows = PluginStoreRow.where(plugin_name: 'custom_wizard').order(:id)
- rows.each do |r, i|
- wizard = CustomWizard::Wizard.new(r.value)
- if wizard.id = wizard["existing_id"]
- r.update_all(key: wizard['id'], value: wizard)
- saved = true
- end
- end
- end
- unless saved
- PluginStore.set('custom_wizard', wizard["id"], wizard)
- end
- render json: success_json
- end
- def remove
- params.require(:id)
- PluginStore.remove('custom_wizard', params[:id])
- render json: success_json
- end
- def find_wizard
- params.require(:wizard_id)
- wizard = PluginStore.get('custom_wizard', params[:wizard_id].underscore)
- render json: success_json.merge(wizard: wizard)
- end
- def custom_wizards
- rows = PluginStoreRow.where(plugin_name: 'custom_wizard').order(:id)
- wizards = [*rows].map { |r| CustomWizard::Wizard.new(r.value) }
- render json: success_json.merge(wizards: wizards)
- end
- def find_submissions
- params.require(:wizard_id)
- wizard = PluginStore.get('custom_wizard_submissions', params[:wizard_id].underscore)
- render json: success_json.merge(submissions: submissions)
- end
- def submissions
- rows = PluginStoreRow.where(plugin_name: 'custom_wizard_submissions').order(:id)
- all = [*rows].map do |r|
- wizard = PluginStore.get('custom_wizard', r.key)
- name = wizard ? wizard['name'] : r.key
- {
- id: r.key,
- name: name,
- submissions: ::JSON.parse(r.value)
- }
- end
- render json: success_json.merge(submissions: all)
- end
- end
|