Skip to content

Commit 098b3b9

Browse files
fix: rsvp event error
1 parent c654da8 commit 098b3b9

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

internal/handlers/event.go

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/go-playground/validator/v10"
1010
"github.com/nevzattalhaozcan/forgotten/internal/models"
1111
"github.com/nevzattalhaozcan/forgotten/internal/services"
12+
"gorm.io/gorm"
1213
)
1314

1415
type EventHandler struct {
@@ -207,16 +208,13 @@ func (h *EventHandler) RSVPToEvent(c *gin.Context) {
207208
return
208209
}
209210

210-
var req models.RSVPRequest
211-
if err := c.ShouldBindJSON(&req); err != nil {
212-
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
213-
return
214-
}
211+
event, err := h.eventService.GetEventByID(uint(eventID))
212+
if err != nil {
213+
c.JSON(http.StatusNotFound, gin.H{"error": "event not found"})
214+
return
215+
}
215216

216-
if err := h.validator.Struct(&req); err != nil {
217-
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
218-
return
219-
}
217+
clubID := event.ClubID
220218

221219
userIdRaw, ok := c.Get("user_id")
222220
if !ok {
@@ -229,6 +227,31 @@ func (h *EventHandler) RSVPToEvent(c *gin.Context) {
229227
return
230228
}
231229

230+
membership, err := h.eventService.ClubRepo().GetClubMemberByUserID(clubID, userID)
231+
if err != nil {
232+
if err == gorm.ErrRecordNotFound {
233+
c.JSON(http.StatusForbidden, gin.H{"error": "club membership required"})
234+
} else {
235+
c.JSON(http.StatusInternalServerError, gin.H{"error": "failed to check membership"})
236+
}
237+
return
238+
}
239+
if !membership.IsApproved {
240+
c.JSON(http.StatusForbidden, gin.H{"error": "membership approval required"})
241+
return
242+
}
243+
244+
var req models.RSVPRequest
245+
if err := c.ShouldBindJSON(&req); err != nil {
246+
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
247+
return
248+
}
249+
250+
if err := h.validator.Struct(&req); err != nil {
251+
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
252+
return
253+
}
254+
232255
err = h.eventService.RSVPToEvent(uint(eventID), &models.EventRSVP{
233256
UserID: userID,
234257
EventID: uint(eventID),

internal/services/event.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,8 @@ func (s *EventService) refreshClubNextMeeting(clubID uint) error {
225225
}
226226

227227
return s.clubRepo.Update(club)
228+
}
229+
230+
func (s *EventService) ClubRepo() repository.ClubRepository {
231+
return s.clubRepo
228232
}

0 commit comments

Comments
 (0)