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