|
@@ -1,7 +1,7 @@
|
1
|
1
|
class GroupsController < ApplicationController
|
2
|
2
|
include GroupsHelper
|
3
|
3
|
before_action :set_group, only: [:show, :edit, :update, :destroy]
|
4
|
|
- before_action :require_admin!, only: [:index]
|
|
4
|
+ before_action :require_admin!, only: [:index, :process_mass_add_members, :mass_add_members]
|
5
|
5
|
before_action :require_membership!, only: [:show]
|
6
|
6
|
before_action :require_leader!, only: [:edit, :update, :destroy]
|
7
|
7
|
|
|
@@ -96,6 +96,27 @@ class GroupsController < ApplicationController
|
96
|
96
|
end
|
97
|
97
|
end
|
98
|
98
|
|
|
99
|
+ def mass_add_members
|
|
100
|
+ @group = Group.find(params[:group_id])
|
|
101
|
+ end
|
|
102
|
+
|
|
103
|
+ def process_mass_add_members
|
|
104
|
+ @group = Group.find(params[:group_id])
|
|
105
|
+ require 'csv'
|
|
106
|
+ uploaded_io = params[:spreadsheet]
|
|
107
|
+ result = Person.from_csv(uploaded_io.read)
|
|
108
|
+
|
|
109
|
+ result.each do |p|
|
|
110
|
+ m = Member.find_by(person: p, group: @group)
|
|
111
|
+ if not m
|
|
112
|
+ m = Member.new(person: p, group: @group)
|
|
113
|
+ m.save!
|
|
114
|
+ end
|
|
115
|
+ end
|
|
116
|
+ flash_message(:success, "#{result.count} people added to group")
|
|
117
|
+ redirect_to group_members_path(@group)
|
|
118
|
+ end
|
|
119
|
+
|
99
|
120
|
private
|
100
|
121
|
# Use callbacks to share common setup or constraints between actions.
|
101
|
122
|
def set_group
|