| 
				
			 | 
			
			
				@@ -1,11 +1,12 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				 class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				2
			 | 
			
			
				   include GroupsHelper 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				3
			 | 
			
			
				   include ActivitiesHelper 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				
			 | 
			
			
				-  before_action :set_activity_and_group, only: [:show, :edit, :update, :destroy, :presence, :change_organizer] 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				
			 | 
			
			
				-  before_action :set_group,            except: [:show, :edit, :update, :destroy, :presence, :change_organizer] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+  before_action :set_activity_and_group, only: [:show, :edit, :update, :destroy, :presence, :change_organizer, :create_subgroup, :update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+  before_action :set_group,            except: [:show, :edit, :update, :destroy, :presence, :change_organizer, :create_subgroup, :update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+  before_action :set_subgroup, only: [:update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				7
			 | 
			
			
				   before_action :require_membership! 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				8
			 | 
			
			
				   before_action :require_leader!, only: [:mass_new, :mass_create, :new, :create, :destroy] 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				
			 | 
			
			
				-  before_action :require_organizer!, only: [:edit, :update, :change_organizer] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+  before_action :require_organizer!, only: [:edit, :update, :change_organizer, :create_subgroup, :update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				10
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				10
			 | 
			
				11
			 | 
			
			
				   # GET /groups/:id/activities 
			 | 
		
	
		
			
			| 
				11
			 | 
			
				12
			 | 
			
			
				   # GET /activities.json 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -33,6 +34,10 @@ class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				33
			 | 
			
				34
			 | 
			
			
				       .find_by(person: current_person) 
			 | 
		
	
		
			
			| 
				34
			 | 
			
				35
			 | 
			
			
				     @counts = @activity.state_counts 
			 | 
		
	
		
			
			| 
				35
			 | 
			
				36
			 | 
			
			
				     @num_participants = @counts.values.sum 
			 | 
		
	
		
			
			| 
				
			 | 
			
				37
			 | 
			
			
				+    @assignable_subgroups = @activity.subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				38
			 | 
			
			
				+      .where(is_assignable: true) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				39
			 | 
			
			
				+      .order(name: :asc) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				40
			 | 
			
			
				+      .pluck(:name) 
			 | 
		
	
		
			
			| 
				36
			 | 
			
				41
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				37
			 | 
			
				42
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				38
			 | 
			
				43
			 | 
			
			
				   # GET /activities/new 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -55,6 +60,9 @@ class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				55
			 | 
			
				60
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				56
			 | 
			
				61
			 | 
			
			
				     @non_organizers_options.sort! 
			 | 
		
	
		
			
			| 
				57
			 | 
			
				62
			 | 
			
			
				     @organizers_options.sort! 
			 | 
		
	
		
			
			| 
				
			 | 
			
				63
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				64
			 | 
			
			
				+    @subgroup = Subgroup.new if !@subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				65
			 | 
			
			
				+    @subgroups = @activity.subgroups.order(is_assignable: :desc, name: :asc) 
			 | 
		
	
		
			
			| 
				58
			 | 
			
				66
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				59
			 | 
			
				67
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				60
			 | 
			
				68
			 | 
			
			
				   # POST /activities 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -125,6 +133,40 @@ class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				125
			 | 
			
				133
			 | 
			
			
				     end 
			 | 
		
	
		
			
			| 
				126
			 | 
			
				134
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				127
			 | 
			
				135
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				136
			 | 
			
			
				+  # POST /activities/1/subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				137
			 | 
			
			
				+  def create_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				138
			 | 
			
			
				+    @subgroup = Subgroup.new(subgroup_params) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				139
			 | 
			
			
				+    @subgroup.activity = @activity 
			 | 
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				141
			 | 
			
			
				+    if @subgroup.save 
			 | 
		
	
		
			
			| 
				
			 | 
			
				142
			 | 
			
			
				+      flash_message :success, I18n.t('activities.subgroups.created') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				143
			 | 
			
			
				+      redirect_to edit_group_activity_path(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				+    else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				+      flash_message :danger, I18n.t('activities.subgroups.create_failed') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				146
			 | 
			
			
				+      set_edit_parameters! 
			 | 
		
	
		
			
			| 
				
			 | 
			
				147
			 | 
			
			
				+      render :edit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				148
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				151
			 | 
			
			
				+  # PATCH /activities/1/subgroups/:subgroup_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				152
			 | 
			
			
				+  def update_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				+    if @subgroup.update(subgroup_params) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				+      flash_message :success, I18n.t('activities.subgroups.updated') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				155
			 | 
			
			
				+      redirect_to edit_group_activity_path(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				156
			 | 
			
			
				+    else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				157
			 | 
			
			
				+      flash_message :danger, I18n.t('activities.subgroups.update_failed') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				+      set_edit_parameters! 
			 | 
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				+      render :edit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				160
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				162
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				+  # DELETE /activities/1/subgroups/:subgroup_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				164
			 | 
			
			
				+  def destroy_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				165
			 | 
			
			
				+    @subgroup.destroy 
			 | 
		
	
		
			
			| 
				
			 | 
			
				166
			 | 
			
			
				+    flash_message :success, I18n.t('activities.subgroups.destroyed') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				167
			 | 
			
			
				+    redirect_to edit_group_activity_path(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				168
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				169
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				128
			 | 
			
				170
			 | 
			
			
				   # PATCH/PUT /groups/:group_id/activities/:id/presence 
			 | 
		
	
		
			
			| 
				129
			 | 
			
				171
			 | 
			
			
				   # PATCH/PUT /groups/:group_id/activities/:id/presence.json 
			 | 
		
	
		
			
			| 
				130
			 | 
			
				172
			 | 
			
			
				   def presence 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -176,8 +218,16 @@ class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				176
			 | 
			
				218
			 | 
			
			
				       @group = Group.find(params[:group_id]) 
			 | 
		
	
		
			
			| 
				177
			 | 
			
				219
			 | 
			
			
				     end 
			 | 
		
	
		
			
			| 
				178
			 | 
			
				220
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				221
			 | 
			
			
				+    def set_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				222
			 | 
			
			
				+      @subgroup = Subgroup.find(params[:subgroup_id]) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				223
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				224
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				179
			 | 
			
				225
			 | 
			
			
				     # Never trust parameters from the scary internet, only allow the white list through. 
			 | 
		
	
		
			
			| 
				180
			 | 
			
				226
			 | 
			
			
				     def activity_params 
			 | 
		
	
		
			
			| 
				181
			 | 
			
				227
			 | 
			
			
				       params.require(:activity).permit(:name, :description, :location, :start, :end, :deadline, :reminder_at) 
			 | 
		
	
		
			
			| 
				182
			 | 
			
				228
			 | 
			
			
				     end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				229
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				230
			 | 
			
			
				+    def subgroup_params 
			 | 
		
	
		
			
			| 
				
			 | 
			
				231
			 | 
			
			
				+      params.require(:subgroup).permit(:name, :is_assignable) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				232
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				183
			 | 
			
				233
			 | 
			
			
				 end 
			 |