@@ -2,6 +2,7 @@ package web
2
2
3
3
import (
4
4
"encoding/base64"
5
+ "encoding/json"
5
6
"errors"
6
7
"fmt"
7
8
"github.com/Team6083/OverHours/models"
@@ -350,6 +351,51 @@ func (web *Web) MeetingParticipantLeaveGET(w http.ResponseWriter, r *http.Reques
350
351
http .Redirect (w , r , fmt .Sprintf ("/meeting/detail/%s" , meetId ), http .StatusSeeOther )
351
352
}
352
353
354
+ func (web * Web ) MeetingParticipantLeaveBatchPOST (w http.ResponseWriter , r * http.Request ) {
355
+ sessionUser := r .Context ().Value ("user" ).(* models.User )
356
+
357
+ if ! sessionUser .CheckPermissionLevel (models .PermissionAdmin ) {
358
+ web .handle403 (w , r )
359
+ return
360
+ }
361
+
362
+ decoder := json .NewDecoder (r .Body )
363
+ var data []string
364
+ err := decoder .Decode (& data )
365
+ if err != nil {
366
+ handleWebErr (w , err )
367
+ return
368
+ }
369
+
370
+ vars := mux .Vars (r )
371
+ meetId := vars ["meetId" ]
372
+
373
+ meeting , err := web .database .GetMeetingByMeetId (meetId )
374
+ if err != nil {
375
+ handleWebErr (w , err )
376
+ return
377
+ }
378
+
379
+ participants := meeting .Participants
380
+
381
+ for _ , v := range data {
382
+ if _ , ok := participants [v ]; ok {
383
+ participant := participants [v ]
384
+ participant .Leave = true
385
+ participants [v ] = participant
386
+ }
387
+ }
388
+
389
+ meeting .Participants = participants
390
+ _ , err = web .database .SaveMeeting (meeting )
391
+ if err != nil {
392
+ handleWebErr (w , err )
393
+ return
394
+ }
395
+
396
+ w .WriteHeader (http .StatusNoContent )
397
+ }
398
+
353
399
func (web * Web ) MeetingParticipantDeleteLogGET (w http.ResponseWriter , r * http.Request ) {
354
400
sessionUser := r .Context ().Value ("user" ).(* models.User )
355
401
0 commit comments