petitions_controller.rb 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. include PetitionHelper
  2. class Admin::PetitionsController < Admin::ApplicationController
  3. before_action :set_petition
  4. allow_collaborators_to :show, :destroy_signatures
  5. def show
  6. @signatures = filtered_signatures
  7. end
  8. # This file will wind up at CiviCRM
  9. def csv
  10. send_data @petition.to_csv
  11. end
  12. # this csv file is just for activists, they tender them to legislators after vetting
  13. def presentable_csv
  14. filename = sanitize_filename("#{@petition}.csv")
  15. send_data @petition.to_presentable_csv, filename: filename
  16. end
  17. def destroy_signatures
  18. @petition.signatures.where(id: params[:signature_ids]).delete_all
  19. if params[:page].to_i > filtered_signatures.total_pages
  20. params[:page] = filtered_signatures.total_pages
  21. end
  22. redirect_to admin_petition_path(@petition, params.slice(:query, :page, :per_page))
  23. end
  24. private
  25. def set_petition
  26. @petition = Petition.find(params[:id])
  27. end
  28. def filtered_signatures
  29. @petition.signatures.
  30. filter(params[:query]).
  31. order(created_at: :desc).
  32. paginate(page: params[:page], per_page: params[:per_page] || 10)
  33. end
  34. end