institutions_controller.rb 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. class Admin::InstitutionsController < Admin::ApplicationController
  2. before_filter :set_action_page
  3. before_action :set_institution, only: [:destroy]
  4. require "csv"
  5. # GET /admin/action_pages/:action_page_id/institutions
  6. def index
  7. @institutions = @actionPage.institutions.order(:name).page(params[:page])
  8. end
  9. # GET /admin/action_pages/:action_page_id/institutions/new
  10. def new
  11. @institution = @actionPage.institutions.new
  12. end
  13. # POST /admin/action_pages/:action_page_id/institutions
  14. def create
  15. @institution = Institution.find_or_initialize_by(name: institution_params[:name])
  16. @actionPage.institutions << @institution
  17. respond_to do |format|
  18. if @institution.save
  19. format.html { redirect_to [:admin, @actionPage, Institution], notice: "Institution was successfully created." }
  20. else
  21. format.html { render "new" }
  22. end
  23. end
  24. end
  25. # POST /admin/action_pages/:action_page_id/institutions/import
  26. def import
  27. names = []
  28. CSV.foreach(params[:file].path, headers: true) do |row|
  29. params = row.to_hash
  30. unless params["name"]
  31. flash[:notice] = "Import failed. Please check CSV formatting"
  32. break
  33. end
  34. names << params["name"]
  35. end
  36. Institution.delay.import(names, @actionPage) if names.present?
  37. redirect_to [:admin, @actionPage, Institution]
  38. end
  39. # DELETE /admin/action_pages/:action_page_id/institutions/1/
  40. def destroy
  41. @actionPage.institutions.delete(@institution)
  42. respond_to do |format|
  43. format.html { redirect_to [:admin, @actionPage, Institution] }
  44. end
  45. end
  46. # DELETE /admin/action_pages/:action_page_id/institutions/
  47. def destroy_all
  48. @actionPage.institutions.delete_all
  49. respond_to do |format|
  50. format.html { redirect_to [:admin, @actionPage, Institution] }
  51. end
  52. end
  53. private
  54. def set_action_page
  55. @actionPage = ActionPage.friendly.find(params[:action_page_id])
  56. raise ActiveRecord::RecordNotFound unless @actionPage
  57. end
  58. def set_institution
  59. @institution = Institution.friendly.find(params[:id])
  60. end
  61. # Never trust parameters from the scary internet, only allow the white list through.
  62. def institution_params
  63. params.require(:institution).permit(:name, :action_page_id)
  64. end
  65. end