admin.rb 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. class CustomWizard::AdminController < ::ApplicationController
  2. before_action :ensure_logged_in
  3. before_action :ensure_admin
  4. def index
  5. render nothing: true
  6. end
  7. def field_types
  8. render json: { types: CustomWizard::FieldTypes.all }
  9. end
  10. def save
  11. params.require(:wizard)
  12. wizard = ::JSON.parse(params[:wizard])
  13. saved = false
  14. if wizard["existing_id"] && rows = PluginStoreRow.where(plugin_name: 'custom_wizard').order(:id)
  15. rows.each do |r, i|
  16. wizard = CustomWizard::Wizard.new(r.value)
  17. if wizard.id = wizard["existing_id"]
  18. r.update_all(key: wizard['id'], value: wizard)
  19. saved = true
  20. end
  21. end
  22. end
  23. unless saved
  24. PluginStore.set('custom_wizard', wizard["id"], wizard)
  25. end
  26. render json: success_json
  27. end
  28. def remove
  29. params.require(:id)
  30. PluginStore.remove('custom_wizard', params[:id])
  31. render json: success_json
  32. end
  33. def find_wizard
  34. params.require(:wizard_id)
  35. wizard = PluginStore.get('custom_wizard', params[:wizard_id].underscore)
  36. render json: success_json.merge(wizard: wizard)
  37. end
  38. def custom_wizards
  39. rows = PluginStoreRow.where(plugin_name: 'custom_wizard').order(:id)
  40. wizards = [*rows].map { |r| CustomWizard::Wizard.new(r.value) }
  41. render json: success_json.merge(wizards: wizards)
  42. end
  43. def find_submissions
  44. params.require(:wizard_id)
  45. wizard = PluginStore.get('custom_wizard_submissions', params[:wizard_id].underscore)
  46. render json: success_json.merge(submissions: submissions)
  47. end
  48. def submissions
  49. rows = PluginStoreRow.where(plugin_name: 'custom_wizard_submissions').order(:id)
  50. all = [*rows].map do |r|
  51. wizard = PluginStore.get('custom_wizard', r.key)
  52. name = wizard ? wizard['name'] : r.key
  53. {
  54. id: r.key,
  55. name: name,
  56. submissions: ::JSON.parse(r.value)
  57. }
  58. end
  59. render json: success_json.merge(submissions: all)
  60. end
  61. end