@@ -9,20 +9,52 @@ import {
99 deleteGuestGroup ,
1010 addUserToGroup ,
1111 removeUserFromGroup ,
12+ getMyGuestGroups ,
13+ getAvailableGuestGroupsForEvent ,
1214} from '../services/guestService' ;
1315import { verifyIdToken } from '../middleware/verifyIdToken' ;
1416
1517const router = express . Router ( ) ;
1618
19+ // Get all guest groups created by the current user (standalone route)
20+ router . get ( '/my-groups' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
21+ try {
22+ const userId = req . userId ;
23+
24+ if ( ! userId ) {
25+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
26+ return ;
27+ }
28+
29+ const result = await getMyGuestGroups ( userId ) ;
30+
31+ if ( ! result . success ) {
32+ res . status ( 400 ) . json ( { message : result . error } ) ;
33+ return ;
34+ }
35+
36+ res . status ( 200 ) . json ( {
37+ message : 'Guest groups retrieved successfully' ,
38+ guestGroups : result . guestGroups ,
39+ totalGroups : result . totalGroups
40+ } ) ;
41+ } catch ( error ) {
42+ console . error ( 'Get my guest groups error:' , error ) ;
43+ res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
44+ }
45+ } ) ;
46+
1747// Create a new guest group for an event
1848router . post ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
1949 try {
2050 const { eventId } = req . params ;
2151 const userId = req . userId ;
52+
2253 if ( ! userId ) {
2354 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
2455 return ;
2556 }
57+
2658 const { name } = req . body ;
2759
2860 if ( ! name ) {
@@ -48,7 +80,7 @@ router.post('/:eventId/groups', verifyIdToken, async (req: Request, res: Respons
4880 guestGroup : result . guestGroup
4981 } ) ;
5082 } catch ( error ) {
51- console . error ( error ) ;
83+ console . error ( 'Create guest group error:' , error ) ;
5284 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
5385 }
5486} ) ;
@@ -58,12 +90,12 @@ router.post('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res
5890 try {
5991 const { eventId, groupId } = req . params ;
6092 const userId = req . userId ;
93+
6194 if ( ! userId ) {
6295 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
6396 return ;
6497 }
6598
66- // Check if user is host or co-host
6799 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
68100 if ( ! isAuthorized ) {
69101 res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can add guest groups to an event' } ) ;
@@ -82,21 +114,58 @@ router.post('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res
82114 guests : result . guests
83115 } ) ;
84116 } catch ( error ) {
85- console . error ( error ) ;
117+ console . error ( 'Add guest group to event error:' , error ) ;
86118 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
87119 }
88120} ) ;
89121
90- router . get ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) => {
122+ // Get available guest groups that can be added to a specific event
123+ router . get ( '/:eventId/available-groups' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
91124 try {
92125 const { eventId } = req . params ;
93126 const userId = req . userId ;
127+
128+ if ( ! userId ) {
129+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
130+ return ;
131+ }
132+
133+ // Check if user is host or co-host of the event
134+ const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
135+ if ( ! isAuthorized ) {
136+ res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can view available guest groups' } ) ;
137+ return ;
138+ }
139+
140+ const result = await getAvailableGuestGroupsForEvent ( userId , eventId ) ;
141+
142+ if ( ! result . success ) {
143+ res . status ( 400 ) . json ( { message : result . error } ) ;
144+ return ;
145+ }
146+
147+ res . status ( 200 ) . json ( {
148+ message : 'Available guest groups retrieved successfully' ,
149+ availableGroups : result . availableGroups ,
150+ totalAvailable : result . totalAvailable
151+ } ) ;
152+ } catch ( error ) {
153+ console . error ( 'Get available guest groups error:' , error ) ;
154+ res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
155+ }
156+ } ) ;
157+
158+ // Get all guest groups for an event
159+ router . get ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
160+ try {
161+ const { eventId } = req . params ;
162+ const userId = req . userId ;
163+
94164 if ( ! userId ) {
95165 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
96166 return ;
97167 }
98168
99- // Check if user is host or co-host
100169 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
101170 if ( ! isAuthorized ) {
102171 res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can view guest groups' } ) ;
@@ -114,22 +183,22 @@ router.get('/:eventId/groups', verifyIdToken, async (req: Request, res: Response
114183 guestGroups : result . guestGroups
115184 } ) ;
116185 } catch ( error ) {
117- console . error ( error ) ;
186+ console . error ( 'Get guest groups error:' , error ) ;
118187 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
119188 }
120189} ) ;
121190
122191// Get a specific guest group
123- router . get ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) => {
192+ router . get ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
124193 try {
125194 const { eventId, groupId } = req . params ;
126195 const userId = req . userId ;
196+
127197 if ( ! userId ) {
128198 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
129199 return ;
130200 }
131201
132- // Check if user is host or co-host
133202 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
134203 if ( ! isAuthorized ) {
135204 res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can view guest groups' } ) ;
@@ -147,7 +216,7 @@ router.get('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
147216 guestGroup : result . guestGroup
148217 } ) ;
149218 } catch ( error ) {
150- console . error ( error ) ;
219+ console . error ( 'Get guest group error:' , error ) ;
151220 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
152221 }
153222} ) ;
@@ -157,10 +226,12 @@ router.put('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
157226 try {
158227 const { eventId, groupId } = req . params ;
159228 const userId = req . userId ;
229+
160230 if ( ! userId ) {
161231 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
162232 return ;
163233 }
234+
164235 const { name } = req . body ;
165236
166237 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
@@ -181,16 +252,17 @@ router.put('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
181252 guestGroup : result . guestGroup
182253 } ) ;
183254 } catch ( error ) {
184- console . error ( error ) ;
255+ console . error ( 'Update guest group error:' , error ) ;
185256 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
186257 }
187258} ) ;
188259
189- // Delete a guest group from an event (does not delete the group itself)
260+ // Delete a guest group permanently
190261router . delete ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
191262 try {
192263 const { eventId, groupId } = req . params ;
193264 const userId = req . userId ;
265+
194266 if ( ! userId ) {
195267 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
196268 return ;
@@ -213,20 +285,24 @@ router.delete('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, r
213285 message : result . message
214286 } ) ;
215287 } catch ( error ) {
216- console . error ( error ) ;
288+ console . error ( 'Delete guest group error:' , error ) ;
217289 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
218290 }
219291} ) ;
220292
221- // Add user to a guest group by phone number
293+
294+ //ignore phone no routes for now
295+ // Add user to a guest group by phone number
222296router . post ( '/:eventId/groups/:groupId/members' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
223297 try {
224298 const { eventId, groupId } = req . params ;
225299 const userId = req . userId ;
300+
226301 if ( ! userId ) {
227302 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
228303 return ;
229304 }
305+
230306 const { phoneNumber } = req . body ;
231307
232308 if ( ! phoneNumber ) {
@@ -252,7 +328,7 @@ router.post('/:eventId/groups/:groupId/members', verifyIdToken, async (req: Requ
252328 member : result . member
253329 } ) ;
254330 } catch ( error ) {
255- console . error ( error ) ;
331+ console . error ( 'Add user to group error:' , error ) ;
256332 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
257333 }
258334} ) ;
@@ -262,10 +338,12 @@ router.delete('/:eventId/groups/:groupId/members', verifyIdToken, async (req: Re
262338 try {
263339 const { eventId, groupId } = req . params ;
264340 const userId = req . userId ;
341+
265342 if ( ! userId ) {
266343 res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
267344 return ;
268345 }
346+
269347 const { phoneNumber } = req . body ;
270348
271349 if ( ! phoneNumber ) {
@@ -290,11 +368,9 @@ router.delete('/:eventId/groups/:groupId/members', verifyIdToken, async (req: Re
290368 message : result . message
291369 } ) ;
292370 } catch ( error ) {
293- console . error ( error ) ;
371+ console . error ( 'Remove user from group error:' , error ) ;
294372 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
295373 }
296374} ) ;
297375
298-
299-
300376export default router ;
0 commit comments