diff --git a/controllers/accessAuthController.go b/controllers/accessAuthController.go index c7266eb..4bff650 100644 --- a/controllers/accessAuthController.go +++ b/controllers/accessAuthController.go @@ -7,11 +7,22 @@ import ( "github.com/gin-gonic/gin" + "git.dynamicdiscord.de/malobeo/portal/openapi" "git.dynamicdiscord.de/malobeo/portal/services" ) type AccessAuthController struct{} +type GroupWrapper struct { + Name string + Id int32 +} + +type AccessAuthWithGroup struct { + AccessAuth openapi.AccessAuthorizationResponse + Groups []GroupWrapper +} + func (gc *AccessAuthController) AccessAuthView(c *gin.Context) { accessAuths, err := services.AccessAuths.GetAll(c) @@ -19,8 +30,32 @@ func (gc *AccessAuthController) AccessAuthView(c *gin.Context) { c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"data": gin.H{"error": err}}) } + aaWrapper := []AccessAuthWithGroup{} + for _, accessAuth := range accessAuths { + + groupWrapper := []GroupWrapper{} + for _, group := range accessAuth.Groups { + groupWrapper = append(groupWrapper, GroupWrapper{ + Name: group.Name, + Id: *group.Id.Get(), + }) + + } + aaWrapper = append(aaWrapper, AccessAuthWithGroup{ + AccessAuth: accessAuth, + Groups: groupWrapper, + }) + } + + groups, err := services.Groups.GetAll(c) + + if err != nil { + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"data": gin.H{"error": err}}) + } + data := CreateSessionData(c, gin.H{ - "accessAuths": accessAuths, + "accessAuths": aaWrapper, + "groups": groups, }) if err != nil { @@ -54,6 +89,8 @@ func (gc *AccessAuthController) AddAccessAuthHandler(c *gin.Context) { func (gc *AccessAuthController) AccessAuthHandler(c *gin.Context) { action := c.PostForm("action") idStr := c.Param("id") + fmt.Println("AA ID: ") + fmt.Println(idStr) id, err := strconv.Atoi(idStr) if err != nil { @@ -63,10 +100,12 @@ func (gc *AccessAuthController) AccessAuthHandler(c *gin.Context) { } if action == "createTimetable" { + fmt.Println(c) weekdayStr := c.PostForm("weekday") starttime := c.PostForm("starttime") durationStr := c.PostForm("duration") duration, err := strconv.Atoi(durationStr) + fmt.Printf("Creating timetable with %s, %s, %d", weekdayStr, starttime, duration) if err != nil { fmt.Println(err) c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) @@ -89,6 +128,70 @@ func (gc *AccessAuthController) AccessAuthHandler(c *gin.Context) { } } + if action == "addGroups" { + fmt.Println("ADD GROUp") + groupIds := c.PostFormArray("groups[]") + + for _, groupIdStr := range groupIds { + groupId, err := strconv.Atoi(groupIdStr) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + + err = services.AccessAuths.AddGroup(c, int32(id), int32(groupId)) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + } + } + + if action == "removeGroup" { + fmt.Println("REMOVE GROUp") + fmt.Println(c) + groupIdStr := c.PostForm("groupId") + fmt.Println(groupIdStr) + groupId, err := strconv.Atoi(groupIdStr) + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + + err = services.AccessAuths.RemoveGroup(c, int32(id), int32(groupId)) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + } + + if action == "activate" { + _, err := services.AccessAuths.SetActive(c, int32(id), true) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + } + + if action == "deactivate" { + _, err := services.AccessAuths.SetActive(c, int32(id), false) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + } + if action == "delete" { err := services.AccessAuths.Delete(c, int32(id)) diff --git a/controllers/groupController.go b/controllers/groupController.go index a1aa70f..9c4a176 100644 --- a/controllers/groupController.go +++ b/controllers/groupController.go @@ -62,6 +62,17 @@ func (gc *GroupController) GroupHandler(c *gin.Context) { return } + if action == "addCard" { + cardName := c.PostForm("Name") + _, err := services.Cards.Create(c, cardName, int32(id)) + + if err != nil { + fmt.Println(err) + c.HTML(http.StatusBadRequest, "accessauths.html", gin.H{"error": err}) + return + } + } + if action == "delete" { err := services.Groups.Delete(c, int32(id)) diff --git a/services/accessAuthService.go b/services/accessAuthService.go index e393b6d..18b2571 100644 --- a/services/accessAuthService.go +++ b/services/accessAuthService.go @@ -46,7 +46,14 @@ func (u *AccessAuthService) GetById(c *gin.Context, id int32) (*openapi.AccessAu } func (u *AccessAuthService) Create(c *gin.Context, name string) (*openapi.AccessAuthorizationResponse, error) { - accessAuthorizationCreate := *openapi.NewAccessAuthorizationCreate(name, false, []openapi.TimetableCreate{}) + accessAuthorizationCreate := *openapi.NewAccessAuthorizationCreate(name, "timetable", false) + accessAuthorizationCreate.Timetables = []openapi.TimetableCreate{ + { + Weekday: 1, + Starttime: "11:00", + Duration: 30, + }, + } apiClient := internal.GetApiClient(c) resp, r, err := apiClient.AccessAuthAPI.AddAccessauthApiV1AaPost(context.Background()).AccessAuthorizationCreate(accessAuthorizationCreate).Execute() @@ -202,3 +209,27 @@ func (u *AccessAuthService) RemoveTimetable(c *gin.Context, accessAuthId int32, fmt.Fprintf(os.Stdout, "Response from `AccessAuthAPI.ChangeAccessauthAaAaIdPatch`: %v\n", resp) return resp, nil } + +func (u *AccessAuthService) AddGroup(c *gin.Context, accessAuthId int32, groupId int32) error { + apiClient := internal.GetApiClient(c) + _, _, err := apiClient.AccessAuthAPI.AssignAccessauthApiV1AaAssignGroupIdAaIdPut(context.Background(), groupId, accessAuthId).Execute() + + if err != nil { + fmt.Fprintf(os.Stderr, "Error when adding group to AccessAuth: %v\n", err) + return err + } + + return nil +} + +func (u *AccessAuthService) RemoveGroup(c *gin.Context, accessAuthId int32, groupId int32) error { + apiClient := internal.GetApiClient(c) + _, _, err := apiClient.AccessAuthAPI.UnassignAccessauthApiV1AaUnassignGroupIdAaIdPut(context.Background(), groupId, accessAuthId).Execute() + + if err != nil { + fmt.Fprintf(os.Stderr, "Error when removing group from AccessAuth: %v\n", err) + return err + } + + return nil +} diff --git a/services/cardService.go b/services/cardService.go index d966dbf..6b166ca 100644 --- a/services/cardService.go +++ b/services/cardService.go @@ -16,10 +16,11 @@ var ( type CardService struct{} // return jwt tokenstring on success -func (u *CardService) Create(c *gin.Context, groupId int32) (*openapi.Card, error) { +func (u *CardService) Create(c *gin.Context, name string, groupId int32) (*openapi.Card, error) { apiClient := internal.GetApiClient(c) - resp, r, err := apiClient.CardAPI.AddCardApiV1CardsGroupIdPost(context.Background(), groupId).Execute() + cardCreate := *openapi.NewCardCreate(name, groupId) // CardCreate | + resp, r, err := apiClient.CardAPI.AddCardApiV1CardsPost(context.Background()).CardCreate(cardCreate).Execute() if err != nil { fmt.Fprintf(os.Stderr, "Error when calling `CardAPI.CreateCardCardsPost``: %v\n", err) diff --git a/views/accessauths.html b/views/accessauths.html index 345d5e9..13c5ddf 100644 --- a/views/accessauths.html +++ b/views/accessauths.html @@ -13,13 +13,20 @@