3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
6 * Members related routes
10 * Copyright © 2014-2020 The Galette Team
12 * This file is part of Galette (http://galette.tuxfamily.org).
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2014-2020 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
33 * @link http://galette.tuxfamily.org
34 * @since 0.8.2dev 2014-11-27
37 use Galette\Controllers\Crud
;
38 use Galette\Controllers\CsvController
;
39 use Galette\Controllers\GaletteController
;
40 use Galette\Controllers\PdfController
;
42 use Galette\Core\Password
;
43 use Galette\Repository\Members
;
44 use Galette\Filters\MembersList
;
45 use Galette\Repository\Groups
;
46 use Galette\Repository\Reminders
;
47 use Galette\Entity\Adherent
;
48 use Galette\Entity\Status
;
49 use Galette\Repository\Titles
;
50 use Galette\Entity\Group
;
52 use Galette\Middleware\MembersNavigate
;
57 [Crud\MembersController
::class, 'selfSubscribe']
58 )->setName('subscribe');
60 //members list CSV export
63 '/members/export/csv',
64 [CsvController
::class, 'membersExport']
65 )->setName('csv-memberslist')->add($authenticate);
69 '/members[/{option:page|order}/{value:\d+|\w+}]',
70 [Crud\MembersController
::class, 'list']
71 )->setName('members')->add($authenticate);
73 //members list filtering
76 [Crud\MembersController
::class, 'filter']
77 )->setName('filter-memberslist')->add($authenticate);
82 [Crud\MembersController
::class, 'showMe']
83 )->setName('me')->add($authenticate);
88 [Crud\MembersController
::class, 'show']
89 )->setName('member')->add($authenticate)->add(MembersNavigate
::class);
92 '/member/edit/{id:\d+}',
93 [Crud\MembersController
::class, 'edit']
94 )->setName('editMember')->add($authenticate)->add(MembersNavigate
::class);
98 [Crud\MembersController
::class, 'add']
99 )->setName('addMember')->add($authenticate)->add(MembersNavigate
::class);
103 [Crud\MembersController
::class, 'doSelfSubscribe']
104 )->setName('storeselfmembers');
108 [Crud\MembersController
::class, 'doAdd']
109 )->setName('doAddMember');
112 '/member/store/{id:\d+}',
113 [Crud\MembersController
::class, 'doEdit']
114 )->setName('doEditMember');
117 '/member/remove/{id:\d+}',
118 [Crud\MembersController
::class, 'confirmDelete']
119 )->setName('removeMember')->add($authenticate);
123 [Crud\MembersController
::class, 'confirmDelete']
124 )->setName('removeMembers')->add($authenticate);
127 '/member/remove' . '[/{id:\d+}]',
128 [Crud\MembersController
::class, 'delete']
129 )->setName('doRemoveMember')->add($authenticate);
131 //advanced search page
134 [Crud\MembersController
::class, 'advancedSearch']
135 )->setName('advanced-search')->add($authenticate);
137 //Batch actions on members list
140 [Crud\MembersController
::class, 'handleBatch']
141 )->setName('batch-memberslist')->add($authenticate);
145 '/members/cards[/{' . Adherent
::PK
. ':\d+}]',
146 [PdfController
::class, 'membersCards']
147 )->setName('pdf-members-cards')->add($authenticate);
153 [PdfController
::class, 'membersLabels']
154 )->setName('pdf-members-labels')->add($authenticate);
158 '/members/adhesion-form/{' . Adherent
::PK
. ':\d+}',
159 [PdfController
::class, 'adhesionForm']
160 )->setName('adhesionForm')->add($authenticate);
162 //Empty PDF adhesion form
164 '/members/empty-adhesion-form',
165 [PdfController
::class, 'adhesionForm']
166 )->setName('emptyAdhesionForm');
171 [Crud\MailingsController
::class, 'add']
172 )->setName('mailing')->add($authenticate);
176 [Crud\MailingsController
::class, 'doAdd']
177 )->setName('doMailing')->add($authenticate);
181 '/mailing/preview[/{id:\d+}]',
182 [Crud\MailingsController
::class, 'preview']
183 )->setName('mailingPreview')->add($authenticate);
186 '/mailing/preview/{id:\d+}/attachment/{pos:\d+}',
187 [Crud\MailingsController
::class, 'previewAttachment']
188 )->setName('previewAttachment')->add($authenticate);
191 '/ajax/mailing/set-recipients',
192 [Crud\MailingsController
::class, 'setRecipients']
193 )->setName('mailingRecipients')->add($authenticate);
198 [GaletteController
::class, 'reminders']
199 )->setName('reminders')->add($authenticate);
203 [GaletteController
::class, 'doReminders']
204 )->setName('doReminders')->add($authenticate);
207 '/members/reminder-filter/{membership:nearly|late}/{mail:withmail|withoutmail}',
208 [GaletteController
::class, 'filterReminders']
209 )->setName('reminders-filter')->add($authenticate);
213 '/attendance-sheet/details',
214 [PdfController
::class, 'attendanceSheetConfig']
215 )->setName('attendance_sheet_details')->add($authenticate);
219 [PdfController
::class, 'attendanceSheet']
220 )->setName('attendance_sheet')->add($authenticate);
223 '/ajax/members[/{option:page|order}/{value:\d+}]',
224 [Crud\MembersController
::class, 'ajaxList']
225 )->setName('ajaxMembers')->add($authenticate);
228 '/ajax/group/members',
229 [Crud\GroupsController
::class, 'ajaxMembers']
230 )->setName('ajaxGroupMembers')->add($authenticate);
233 '/member/{id:\d+}/file/{fid:\d+}/{pos:\d+}/{name}',
234 [Crud\MembersController
::class, 'getDynamicFile']
235 )->setName('getDynamicFile')->add($authenticate);
238 '/members/mass-change',
239 [Crud\MembersController
::class, 'massChange']
240 )->setName('masschangeMembers')->add($authenticate);
243 '/members/mass-change/validate',
244 [Crud\MembersController
::class, 'validateMassChange']
245 )->setName('masschangeMembersReview')->add($authenticate);
248 '/members/mass-change',
249 [Crud\MembersController
::class, 'doMassChange']
250 )->setName('massstoremembers')->add($authenticate);
254 '/members/duplicate/{' . Adherent
::PK
. ':\d+}',
255 [Crud\MembersController
::class, 'duplicate']
256 )->setName('duplicateMember')->add($authenticate);
262 [Crud\SavedSearchesController
::class, 'doAdd']
263 )->setName('saveSearch');
266 '/saved-searches[/{option:page|order}/{value:\d+}]',
267 [Crud\SavedSearchesController
::class, 'list']
268 )->setName('searches')->add($authenticate);
271 '/search/remove/{id:\d+}',
272 [Crud\SavedSearchesController
::class, 'confirmDelete']
273 )->setName('removeSearch')->add($authenticate);
277 [Crud\SavedSearchesController
::class, 'confirmDelete']
278 )->setName('removeSearches')->add($authenticate);
281 '/search/remove' . '[/{id:\d+}]',
282 [Crud\SavedSearchesController
::class, 'delete']
283 )->setName('doRemoveSearch')->add($authenticate);
287 [Crud\SavedSearchesController
::class, 'load']
288 )->setName('loadSearch');