Sprankelprachtig aan/afmeldsysteem

members_controller.rb 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. class MembersController < ApplicationController
  2. include GroupsHelper
  3. before_action :set_group
  4. before_action :set_member, only: [:show, :edit, :update, :destroy]
  5. before_action :require_leader!
  6. # GET /members
  7. # GET /members.json
  8. def index
  9. @members = @group.members
  10. .joins(:person)
  11. .order(is_leader: :desc)
  12. .order('people.first_name ASC')
  13. end
  14. # GET /members/1
  15. # GET /members/1.json
  16. def show
  17. end
  18. # GET /members/new
  19. def new
  20. @member = Member.new
  21. @possible_members = Person.where.not(id: @group.person_ids)
  22. end
  23. # GET /members/1/edit
  24. def edit
  25. @possible_members = Person.where.not(id: @group.person_ids)
  26. end
  27. # POST /members
  28. # POST /members.json
  29. def create
  30. @member = Member.new(member_params)
  31. @member.group = @group
  32. respond_to do |format|
  33. if @member.save
  34. format.html {
  35. redirect_to group_member_url(@group, @member)
  36. flash_message(:info, 'Member was successfully created.')
  37. }
  38. format.json { render :show, status: :created, location: @member }
  39. else
  40. @possible_members = Person.where.not(id: @group.person_ids)
  41. format.html { render :new }
  42. format.json { render json: @member.errors, status: :unprocessable_entity }
  43. end
  44. end
  45. end
  46. # PATCH/PUT /members/1
  47. # PATCH/PUT /members/1.json
  48. def update
  49. respond_to do |format|
  50. if @member.update(member_params)
  51. format.html {
  52. redirect_to group_member_url(@group, @member)
  53. flash_message(:info, 'Member was successfully updated.')
  54. }
  55. format.json { render :show, status: :ok, location: @member }
  56. else
  57. @possible_members = Person.where.not(id: @group.person_ids)
  58. format.html { render :edit }
  59. format.json { render json: @member.errors, status: :unprocessable_entity }
  60. end
  61. end
  62. end
  63. # DELETE /members/1
  64. # DELETE /members/1.json
  65. def destroy
  66. @member.destroy
  67. respond_to do |format|
  68. format.html {
  69. redirect_to group_members_url(@group)
  70. flash_message(:info, 'Member was successfully destroyed.')
  71. }
  72. format.json { head :no_content }
  73. end
  74. end
  75. private
  76. # Use callbacks to share common setup or constraints between actions.
  77. def set_member
  78. @member = Member.find(params[:id])
  79. end
  80. def set_group
  81. @group = Group.find(params[:group_id])
  82. end
  83. # Never trust parameters from the scary internet, only allow the white list through.
  84. def member_params
  85. params.require(:member).permit(:person_id, :is_leader)
  86. end
  87. end