@@ -44,10 +44,6 @@ type JoinPayload struct {
4444 TeamId string `json:"teamId"`
4545}
4646
47- type Response struct {
48- teamData GetTeamResponse
49- }
50-
5147func MD5HashCode (teamName string ) (string , error ) {
5248 randNum , err := rand .Int (rand .Reader , big .NewInt (math .MaxInt64 ))
5349 if err != nil {
@@ -72,6 +68,7 @@ func (server *Server) signupsAllowed(eventId string) bool {
7268}
7369
7470func (server * Server ) GetAllTeams (ctx * gin.Context ) {
71+ // what if there's no session => no user id
7572 teams , err := database .GetTeams ()
7673 if err == nil {
7774 ctx .JSON (http .StatusOK , teams )
@@ -84,43 +81,23 @@ func (server *Server) GetAllTeams(ctx *gin.Context) {
8481func (server * Server ) GetUserTeams (ctx * gin.Context ) {
8582 session := sessions .Default (ctx )
8683 userId := session .Get ("userId" )
87- strUserId := userId .(string )
88-
8984 if userId == nil {
9085 ctx .Status (http .StatusNotFound )
9186 return
9287 }
93- // var teamResponse GetTeamResponse
94- // var teamsResponse []GetTeamResponse
88+ strUserId := userId .(string )
9589
9690 teams , err := database .GetUserTeams (convert .StringToUUID (strUserId ))
9791 if err != nil {
9892 ctx .Status (http .StatusInternalServerError )
9993 return
10094 }
101-
102- //1. join databse to return members
10395 ctx .JSON (http .StatusOK , teams )
104-
105- // add all the GetTeamResponse to []GetTeamResponse
106- // loop through teams, get team id
107- // assign each team to teamResponse type..
108-
109- }
110- func (server * Server ) sendTeamInfo (teamResponse GetTeamResponse ) {
111- router := gin .Default ()
112- router .POST ("/teams/browse" , func (ctx * gin.Context ) {
113- response := Response {
114- teamData : teamResponse ,
115- }
116- ctx .JSON (http .StatusOK , response )
117- })
11896}
11997
12098// stepp 4: GET team info
12199// purpose is to construct the DBTeamMemberInfo
122- func (server * Server ) GetTeamInfo (ctx * gin.Context ) {
123- id := convert .StringToUUID (ctx .Param ("id" ))
100+ func (server * Server ) GetTeamInfo (id pgtype.UUID ) (* GetTeamResponse , error ) {
124101
125102 var teamResponse GetTeamResponse
126103 var team database.DBTeam
@@ -130,34 +107,39 @@ func (server *Server) GetTeamInfo(ctx *gin.Context) {
130107 team , err := database .GetTeam (id )
131108 if err != nil {
132109 logger .Error ("failed to get team: %v" , err )
133- ctx .JSON (http .StatusInternalServerError , gin.H {"error" : fmt .Sprintf ("failed to get team: %v" , err )})
134- return
110+ return nil , err
135111 }
136112
137113 event , err = database .GetEvent (team .EventId )
138114 if err != nil {
139115 logger .Error ("failed to get event: %v" , err )
140- ctx .JSON (http .StatusInternalServerError , gin.H {"error" : fmt .Sprintf ("failed to get event: %v" , err )})
141- return
116+ return nil , err
142117 }
143118
144119 members , err = database .GetMembersByTeamId (team .Id )
145120 if err != nil {
146121 logger .Error ("failed to get event: %v" , err )
147- ctx .JSON (http .StatusInternalServerError , gin.H {"error" : fmt .Sprintf ("failed to get members: %v" , err )})
148- return
122+ return nil , err
149123 }
150124
151125 // attach all 3 structures to GetTeamResponse --> nested structs turn into nested JSON (with ctx.JSON)
152126 teamResponse .Team = & team
153127 teamResponse .Event = & event
154128 teamResponse .Members = members
155-
156- server .sendTeamInfo (teamResponse )
157- //ctx.JSON(http.StatusOK, teamResponse)
129+
130+ return & teamResponse , nil
158131}
159132
133+ func (server * Server ) sendTeamInfo (ctx * gin.Context ) {
134+ id := convert .StringToUUID (ctx .Param ("id" ))
135+
136+ teamResponse , err := server .GetTeamInfo (id )
137+ if err != nil {
138+ ctx .Status (http .StatusBadRequest )
139+ }
160140
141+ ctx .JSON (http .StatusOK , teamResponse )
142+ }
161143
162144func (server * Server ) GetTeamInfoByInviteCode (ctx * gin.Context ) {
163145 inviteCode := ctx .Param ("invitecode" )
@@ -205,7 +187,10 @@ func (server *Server) CreateTeam(ctx *gin.Context) {
205187 // Step 4: Post Team Data API (TWO PARTS 1) create team 2) add team members)
206188 session := sessions .Default (ctx )
207189 userId := session .Get ("userId" )
208-
190+ if userId == nil {
191+ ctx .Status (http .StatusBadRequest )
192+ return
193+ }
209194 strUserId := userId .(string )
210195
211196 var team database.DBTeam
@@ -300,28 +285,43 @@ func (server *Server) UpdateTeamMembers(ctx *gin.Context) {
300285 ctx .Status (http .StatusBadRequest )
301286 return
302287 }
303-
304288 //database.AddTeamMember(convert.StringToUUID(userId.(string), ))
305289}
306290
307291func (server * Server ) MemberJoin (ctx * gin.Context ) {
308-
309292 session := sessions .Default (ctx )
310293 userId := session .Get ("userId" )
311-
312294 fmt .Println (userId )
295+
296+ if userId == nil {
297+ ctx .Status (http .StatusNotFound )
298+ return
299+ }
300+ strUserId := userId .(string )
301+ uuidUserId := convert .StringToUUID (strUserId )
302+
303+
313304 var teamId JoinPayload
314305
315306 if err := ctx .ShouldBindJSON (& teamId ); err != nil {
316307 ctx .JSON (http .StatusBadRequest , gin.H {"error" : err .Error ()})
308+ return
317309 }
318310 fmt .Println (teamId ) // this prints {cc457e3e-210a-4d5d-83d8-0899426dfc93}
311+ uuidTeamId := convert .StringToUUID (teamId .TeamId )
312+ teamInfo , err := server .GetTeamInfo (uuidTeamId )
313+ if err != nil {
314+ ctx .Status (http .StatusUnauthorized )
315+ return
316+ }
319317
320- // call getteaminfo
321- //verify team is public
322- //var team
323- //var isPublic bool = team.ispublic
324-
318+ // verifies team is public
319+ var isPublic string = teamInfo .Team .Visibility
320+ if isPublic == "private" {
321+ ctx .Status (http .StatusForbidden )
322+ return
323+ }
324+ database .AddTeamMember (uuidUserId , uuidTeamId , "member" )
325325}
326326
327327func (server * Server ) MemberInvite (ctx * gin.Context ) {
@@ -352,7 +352,7 @@ func (server *Server) SetupTeamRoutes() {
352352 group .POST ("/join" , server .MemberJoin )
353353 group .POST ("/:invitecode" , server .MemberInvite )
354354 //group.GET("/", server.GetAllTeams)
355- group .GET ("/:id" , server .GetTeamInfo )
355+ group .GET ("/:id" , server .sendTeamInfo )
356356 group .GET ("/invite/:invitecode" , server .GetTeamInfoByInviteCode )
357357 // group.PUT("/:id", server.UpdateTeam)
358358 // Step 3: Post Team Data API
0 commit comments