| 
				
			 | 
			
			
				@@ -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 
			 |