11import express , { Request , Response } from 'express' ;
22import {
3- createGuestGroup ,
43 getGuestGroups ,
54 getGuestGroup ,
5+ isEventHostOrCoHost ,
6+ addGuestGroupToEvent ,
7+ createGuestGroup ,
68 updateGuestGroup ,
79 deleteGuestGroup ,
8- addMemberToGroup ,
9- removeMemberFromGroup ,
10- isEventHostOrCoHost
10+ addUserToGroup ,
11+ removeUserFromGroup ,
1112} from '../services/guestService' ;
1213import { verifyIdToken } from '../middleware/verifyIdToken' ;
1314
1415const router = express . Router ( ) ;
1516
16- // Create a new guest group
17- router . post ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) => {
17+ // Create a new guest group for an event
18+ router . post ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
1819 try {
1920 const { eventId } = req . params ;
2021 const userId = req . userId ;
21- const { name, members } = req . body ;
22+ if ( ! userId ) {
23+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
24+ return ;
25+ }
26+ const { name } = req . body ;
2227
2328 if ( ! name ) {
2429 res . status ( 400 ) . json ( { message : 'Group name is required' } ) ;
2530 return ;
2631 }
2732
28- // Check if user is host or co-host
2933 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
3034 if ( ! isAuthorized ) {
3135 res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can create guest groups' } ) ;
3236 return ;
3337 }
3438
35- const result = await createGuestGroup ( eventId , { name, members } ) ;
39+ const result = await createGuestGroup ( { name, createdBy : userId , eventId } ) ;
3640
3741 if ( ! result . success ) {
3842 res . status ( 400 ) . json ( { message : result . error } ) ;
@@ -49,11 +53,48 @@ router.post('/:eventId/groups', verifyIdToken, async (req: Request, res: Respons
4953 }
5054} ) ;
5155
52- // Get all guest groups for an event
56+ // Add an existing guest group to an event
57+ router . post ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
58+ try {
59+ const { eventId, groupId } = req . params ;
60+ const userId = req . userId ;
61+ if ( ! userId ) {
62+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
63+ return ;
64+ }
65+
66+ // Check if user is host or co-host
67+ const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
68+ if ( ! isAuthorized ) {
69+ res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can add guest groups to an event' } ) ;
70+ return ;
71+ }
72+
73+ const result = await addGuestGroupToEvent ( eventId , groupId ) ;
74+
75+ if ( ! result . success ) {
76+ res . status ( 400 ) . json ( { message : result . error } ) ;
77+ return ;
78+ }
79+
80+ res . status ( 200 ) . json ( {
81+ message : 'Guest group added to event successfully' ,
82+ guests : result . guests
83+ } ) ;
84+ } catch ( error ) {
85+ console . error ( error ) ;
86+ res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
87+ }
88+ } ) ;
89+
5390router . get ( '/:eventId/groups' , verifyIdToken , async ( req : Request , res : Response ) => {
5491 try {
5592 const { eventId } = req . params ;
5693 const userId = req . userId ;
94+ if ( ! userId ) {
95+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
96+ return ;
97+ }
5798
5899 // Check if user is host or co-host
59100 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
@@ -83,6 +124,10 @@ router.get('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
83124 try {
84125 const { eventId, groupId } = req . params ;
85126 const userId = req . userId ;
127+ if ( ! userId ) {
128+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
129+ return ;
130+ }
86131
87132 // Check if user is host or co-host
88133 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
@@ -108,20 +153,23 @@ router.get('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
108153} ) ;
109154
110155// Update a guest group
111- router . put ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) => {
156+ router . put ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
112157 try {
113158 const { eventId, groupId } = req . params ;
114159 const userId = req . userId ;
115- const { name, members } = req . body ;
160+ if ( ! userId ) {
161+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
162+ return ;
163+ }
164+ const { name } = req . body ;
116165
117- // Check if user is host or co-host
118166 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
119167 if ( ! isAuthorized ) {
120- res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can update guest groups ' } ) ;
168+ res . status ( 403 ) . json ( { message : 'You are not authorized to update this guest group ' } ) ;
121169 return ;
122170 }
123171
124- const result = await updateGuestGroup ( groupId , { name, members } ) ;
172+ const result = await updateGuestGroup ( groupId , { name } ) ;
125173
126174 if ( ! result . success ) {
127175 res . status ( 400 ) . json ( { message : result . error } ) ;
@@ -138,16 +186,19 @@ router.put('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, res:
138186 }
139187} ) ;
140188
141- // Delete a guest group
142- router . delete ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) => {
189+ // Delete a guest group from an event (does not delete the group itself)
190+ router . delete ( '/:eventId/groups/:groupId' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
143191 try {
144192 const { eventId, groupId } = req . params ;
145193 const userId = req . userId ;
194+ if ( ! userId ) {
195+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
196+ return ;
197+ }
146198
147- // Check if user is host or co-host
148199 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
149200 if ( ! isAuthorized ) {
150- res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can delete guest groups ' } ) ;
201+ res . status ( 403 ) . json ( { message : 'You are not authorized to delete this guest group ' } ) ;
151202 return ;
152203 }
153204
@@ -167,26 +218,29 @@ router.delete('/:eventId/groups/:groupId', verifyIdToken, async (req: Request, r
167218 }
168219} ) ;
169220
170- // Add member to guest group by phone number
171- router . post ( '/:eventId/groups/:groupId/members' , verifyIdToken , async ( req : Request , res : Response ) => {
221+ // Add user to a guest group by phone number
222+ router . post ( '/:eventId/groups/:groupId/members' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
172223 try {
173224 const { eventId, groupId } = req . params ;
174225 const userId = req . userId ;
226+ if ( ! userId ) {
227+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
228+ return ;
229+ }
175230 const { phoneNumber } = req . body ;
176231
177232 if ( ! phoneNumber ) {
178233 res . status ( 400 ) . json ( { message : 'Phone number is required' } ) ;
179234 return ;
180235 }
181236
182- // Check if user is host or co-host
183237 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
184238 if ( ! isAuthorized ) {
185- res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can add members to guest groups ' } ) ;
239+ res . status ( 403 ) . json ( { message : 'You are not authorized to add members to this guest group ' } ) ;
186240 return ;
187241 }
188242
189- const result = await addMemberToGroup ( groupId , eventId , phoneNumber ) ;
243+ const result = await addUserToGroup ( groupId , phoneNumber , userId ) ;
190244
191245 if ( ! result . success ) {
192246 res . status ( 400 ) . json ( { message : result . error } ) ;
@@ -195,34 +249,37 @@ router.post('/:eventId/groups/:groupId/members', verifyIdToken, async (req: Requ
195249
196250 res . status ( 200 ) . json ( {
197251 message : result . message ,
198- guest : result . guest
252+ member : result . member
199253 } ) ;
200254 } catch ( error ) {
201255 console . error ( error ) ;
202256 res . status ( 500 ) . json ( { message : 'Internal Server Error' } ) ;
203257 }
204258} ) ;
205259
206- // Remove member from guest group by phone number
207- router . delete ( '/:eventId/groups/:groupId/members' , verifyIdToken , async ( req : Request , res : Response ) => {
260+ // Remove user from a guest group by phone number
261+ router . delete ( '/:eventId/groups/:groupId/members' , verifyIdToken , async ( req : Request , res : Response ) : Promise < void > => {
208262 try {
209263 const { eventId, groupId } = req . params ;
210264 const userId = req . userId ;
265+ if ( ! userId ) {
266+ res . status ( 401 ) . json ( { message : 'Unauthorized' } ) ;
267+ return ;
268+ }
211269 const { phoneNumber } = req . body ;
212270
213271 if ( ! phoneNumber ) {
214272 res . status ( 400 ) . json ( { message : 'Phone number is required' } ) ;
215273 return ;
216274 }
217275
218- // Check if user is host or co-host
219276 const isAuthorized = await isEventHostOrCoHost ( userId , eventId ) ;
220277 if ( ! isAuthorized ) {
221- res . status ( 403 ) . json ( { message : 'Only event hosts and co-hosts can remove members from guest groups ' } ) ;
278+ res . status ( 403 ) . json ( { message : 'You are not authorized to remove members from this guest group ' } ) ;
222279 return ;
223280 }
224281
225- const result = await removeMemberFromGroup ( groupId , phoneNumber ) ;
282+ const result = await removeUserFromGroup ( groupId , phoneNumber ) ;
226283
227284 if ( ! result . success ) {
228285 res . status ( 400 ) . json ( { message : result . error } ) ;
@@ -238,4 +295,6 @@ router.delete('/:eventId/groups/:groupId/members', verifyIdToken, async (req: Re
238295 }
239296} ) ;
240297
241- export default router ;
298+
299+
300+ export default router ;
0 commit comments