| 
				
			 | 
			
			
				@@ -1,12 +1,24 @@ 
			 | 
		
	
		
			
			| 
				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, :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] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+  has_activity_id = [ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+    :show, :edit, :edit_subgroups, :update, :update_subgroups, :destroy, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+    :presence, :change_organizer, :create_subgroup, :update_subgroup, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+    :destroy_subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				9
			 | 
			
			
				+  ] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				10
			 | 
			
			
				+  before_action :set_activity_and_group, only: has_activity_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				11
			 | 
			
			
				+  before_action :set_group,            except: has_activity_id 
			 | 
		
	
		
			
			| 
				
			 | 
			
				12
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				6
			 | 
			
				13
			 | 
			
			
				   before_action :set_subgroup, only: [:update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				14
			 | 
			
			
				   before_action :require_membership! 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				
			 | 
			
			
				-  before_action :require_leader!, only: [:mass_new, :mass_create, :new, :create, :destroy] 
			 | 
		
	
		
			
			| 
				9
			 | 
			
				
			 | 
			
			
				-  before_action :require_organizer!, only: [:edit, :update, :change_organizer, :create_subgroup, :update_subgroup, :destroy_subgroup] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+  before_action :require_leader!, only: [ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				16
			 | 
			
			
				+    :mass_new, :mass_create, :new, :create, :destroy 
			 | 
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				+  ] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+  before_action :require_organizer!, only: [ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				19
			 | 
			
			
				+    :edit, :update, :change_organizer, :create_subgroup, :update_subgroup, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				20
			 | 
			
			
				+    :destroy_subgroup, :edit_subgroups, :update_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				+  ] 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				22
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				11
			 | 
			
				23
			 | 
			
			
				   # GET /groups/:id/activities 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				24
			 | 
			
			
				   # GET /activities.json 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -54,6 +66,66 @@ class ActivitiesController < ApplicationController 
			 | 
		
	
		
			
			| 
				54
			 | 
			
				66
			 | 
			
			
				     set_edit_parameters! 
			 | 
		
	
		
			
			| 
				55
			 | 
			
				67
			 | 
			
			
				   end 
			 | 
		
	
		
			
			| 
				56
			 | 
			
				68
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				69
			 | 
			
			
				+  # GET /activities/1/edit_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+  def edit_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				71
			 | 
			
			
				+    @subgroups = @activity.subgroups.order(is_assignable: :desc, name: :asc) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+    if @subgroups.none? 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+      flash_message(:error, I18n.t('activities.errors.cannot_subgroup_without_subgroups')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+      redirect_to group_activity_edit(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+    @subgroup_options = @subgroups.map { |sg| [sg.name, sg.id] } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+    @subgroup_options.prepend(['--', 'nil']) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+    @participants = @activity.participants 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+      .joins(:person) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+      .where.not(attending: false) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				+      .order(:subgroup_id) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+      .order('people.first_name', 'people.last_name') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+  # POST /activities/1/update_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+  def update_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+    # TODO: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+    # voor elke key in participant_subgroups 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+    # pak participant, subgroup 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+    # verifieer participant hoort bij activiteit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				94
			 | 
			
			
				+    # verifieer subgroup hoort bij activiteit 
			 | 
		
	
		
			
			| 
				
			 | 
			
				95
			 | 
			
			
				+    # (impl dat editen mogen al gecheckt is, check of dit zo is!) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				96
			 | 
			
			
				+    # doe veranderen 
			 | 
		
	
		
			
			| 
				
			 | 
			
				97
			 | 
			
			
				+    # knikker alles in een transactie want dan atomisch enzo cool en leuk 
			 | 
		
	
		
			
			| 
				
			 | 
			
				98
			 | 
			
			
				+    # S: on error netjes bleren maar wat er mis kan gaan is bijna alleen gekut dus meh 
			 | 
		
	
		
			
			| 
				
			 | 
			
				99
			 | 
			
			
				+    kappen = false 
			 | 
		
	
		
			
			| 
				
			 | 
			
				100
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				101
			 | 
			
			
				+    Participant.transaction do 
			 | 
		
	
		
			
			| 
				
			 | 
			
				102
			 | 
			
			
				+      params[:participant_subgroups].each do |k, v| 
			 | 
		
	
		
			
			| 
				
			 | 
			
				103
			 | 
			
			
				+        p = Participant.find_by id: k 
			 | 
		
	
		
			
			| 
				
			 | 
			
				104
			 | 
			
			
				+        sg = Subgroup.find_by id: v unless v == 'nil' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				105
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				106
			 | 
			
			
				+        if !p || p.activity != @activity || (!sg && v != 'nil') || (sg && sg.activity != @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				107
			 | 
			
			
				+          flash_message(:danger, I18n.t(:somethingbroke)) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				108
			 | 
			
			
				+          redirect_to group_activity_edit_subgroups_path(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				109
			 | 
			
			
				+          kappen = true 
			 | 
		
	
		
			
			| 
				
			 | 
			
				110
			 | 
			
			
				+          raise ActiveRecord::Rollback 
			 | 
		
	
		
			
			| 
				
			 | 
			
				111
			 | 
			
			
				+        end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				112
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				113
			 | 
			
			
				+        if v != 'nil' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				114
			 | 
			
			
				+          p.subgroup = sg 
			 | 
		
	
		
			
			| 
				
			 | 
			
				115
			 | 
			
			
				+        else 
			 | 
		
	
		
			
			| 
				
			 | 
			
				116
			 | 
			
			
				+          p.subgroup = nil 
			 | 
		
	
		
			
			| 
				
			 | 
			
				117
			 | 
			
			
				+        end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				118
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				119
			 | 
			
			
				+        p.save 
			 | 
		
	
		
			
			| 
				
			 | 
			
				120
			 | 
			
			
				+      end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				121
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				122
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				123
			 | 
			
			
				+    unless kappen 
			 | 
		
	
		
			
			| 
				
			 | 
			
				124
			 | 
			
			
				+      flash_message(:success, I18n.t('activities.subgroups.edited')) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				125
			 | 
			
			
				+      redirect_to edit_group_activity_path(@group, @activity) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				126
			 | 
			
			
				+    end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				127
			 | 
			
			
				+  end 
			 | 
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				57
			 | 
			
				129
			 | 
			
			
				   # Shared lookups for rendering the edit-view 
			 | 
		
	
		
			
			| 
				58
			 | 
			
				130
			 | 
			
			
				   def set_edit_parameters! 
			 | 
		
	
		
			
			| 
				59
			 | 
			
				131
			 | 
			
			
				     @non_organizers = @activity.participants.where(is_organizer: [false, nil]) 
			 |