partners_controller.rb 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. class PartnersController < ApplicationController
  2. layout "admin"
  3. before_action :set_partner
  4. before_filter :authenticate
  5. # GET /partners/1
  6. # GET /partners/1.json
  7. def show
  8. @subscriptions = @partner.subscriptions.
  9. paginate(page: params[:page], per_page: 10).
  10. order("id desc")
  11. end
  12. def csv
  13. send_data @partner.to_csv, filename: "eff_partner_emails.csv"
  14. end
  15. # PATCH/PUT /partners/1
  16. # PATCH/PUT /partners/1.json
  17. def update
  18. respond_to do |format|
  19. if @partner.update(partner_params)
  20. format.html { redirect_to @partner, notice: "Partner was successfully updated." }
  21. format.json { head :no_content }
  22. else
  23. format.html { render "edit" }
  24. format.json { render json: @partner.errors, status: :unprocessable_entity }
  25. end
  26. end
  27. end
  28. def add_user
  29. user = User.find_by_email(params[:email])
  30. if user.nil?
  31. flash[:notice] = "Couldn't find a user by email #{params[:email]}"
  32. else
  33. if user.partner.nil?
  34. user.partner = @partner
  35. user.save
  36. elsif user.partner == @partner
  37. flash[:notice] = "That user is already linked to #{@partner.name}"
  38. else
  39. flash[:notice] = "That user is linked to another partner: #{user.partner.name}"
  40. end
  41. end
  42. redirect_to @partner
  43. end
  44. def remove_user
  45. user = User.find(params[:user_id])
  46. if user.partner == @partner
  47. user.partner = nil
  48. user.save
  49. else
  50. flash[:notice] = "That user is not linked to #{@partner.name}"
  51. end
  52. redirect_to @partner
  53. end
  54. private
  55. # Use callbacks to share common setup or constraints between actions.
  56. def set_partner
  57. @partner = Partner.find(params[:id])
  58. end
  59. def authenticate
  60. authenticate_user!
  61. unless current_user.admin?
  62. raise ActiveRecord::RecordNotFound if current_user.partner != @partner
  63. end
  64. end
  65. # Never trust parameters from the scary internet, only allow the white list through.
  66. def partner_params
  67. params.require(:partner).permit(:name, :privacy_url, :code)
  68. end
  69. end