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