diff --git a/app/http/endpoints/api/getautoclose.go b/app/http/endpoints/api/getautoclose.go new file mode 100644 index 0000000..16752e4 --- /dev/null +++ b/app/http/endpoints/api/getautoclose.go @@ -0,0 +1,20 @@ +package api + +import ( + "github.com/TicketsBot/GoPanel/database" + "github.com/gin-gonic/gin" +) + +func GetAutoClose(ctx *gin.Context) { + guildId := ctx.Keys["guildid"].(uint64) + + settings, err := database.Client.AutoClose.Get(guildId); if err != nil { + ctx.AbortWithStatusJSON(500, gin.H{ + "success": false, + "error": err.Error(), + }) + return + } + + ctx.JSON(200, settings) +} diff --git a/app/http/endpoints/api/postautoclose.go b/app/http/endpoints/api/postautoclose.go new file mode 100644 index 0000000..3bd6edf --- /dev/null +++ b/app/http/endpoints/api/postautoclose.go @@ -0,0 +1,48 @@ +package api + +import ( + dbclient "github.com/TicketsBot/GoPanel/database" + "github.com/TicketsBot/database" + "github.com/gin-gonic/gin" +) + +func PostAutoClose(ctx *gin.Context) { + guildId := ctx.Keys["guildid"].(uint64) + + var settings database.AutoCloseSettings + if err := ctx.BindJSON(&settings); err != nil { + ctx.AbortWithStatusJSON(400, gin.H{ + "success": false, + "error": err.Error(), + }) + return + } + + if settings.Enabled && (settings.SinceLastMessage == nil || settings.SinceOpenWithNoResponse == nil) { + ctx.AbortWithStatusJSON(400, gin.H{ + "success": false, + "error": "No time period provided", + }) + return + } + + if (settings.SinceOpenWithNoResponse != nil && *settings.SinceOpenWithNoResponse < 0) || (settings.SinceLastMessage != nil && *settings.SinceLastMessage < 0) { + ctx.AbortWithStatusJSON(400, gin.H{ + "success": false, + "error": "Negative time period provided", + }) + return + } + + if err := dbclient.Client.AutoClose.Set(guildId, settings); err != nil { + ctx.AbortWithStatusJSON(500, gin.H{ + "success": false, + "error": err.Error(), + }) + return + } + + ctx.JSON(200, gin.H{ + "success": true, + }) +} diff --git a/app/http/server.go b/app/http/server.go index 2ccfe6b..5561f4a 100644 --- a/app/http/server.go +++ b/app/http/server.go @@ -73,37 +73,40 @@ func StartServer() { } apiGroup := router.Group("/api", middleware.AuthenticateToken) - guildAuthApi := apiGroup.Group("/", middleware.AuthenticateGuild(true)) + guildAuthApi := apiGroup.Group("/:id", middleware.AuthenticateGuild(true)) { - guildAuthApi.GET("/:id/channels", api.ChannelsHandler) - guildAuthApi.GET("/:id/premium", api.PremiumHandler) - guildAuthApi.GET("/:id/user/:user", api.UserHandler) + guildAuthApi.GET("/channels", api.ChannelsHandler) + guildAuthApi.GET("/premium", api.PremiumHandler) + guildAuthApi.GET("/user/:user", api.UserHandler) - guildAuthApi.GET("/:id/settings", api.GetSettingsHandler) - guildAuthApi.POST("/:id/settings", api.UpdateSettingsHandler) + guildAuthApi.GET("/settings", api.GetSettingsHandler) + guildAuthApi.POST("/settings", api.UpdateSettingsHandler) - guildAuthApi.GET("/:id/blacklist", api.GetBlacklistHandler) - guildAuthApi.PUT("/:id/blacklist", api.AddBlacklistHandler) - guildAuthApi.DELETE("/:id/blacklist/:user", api.RemoveBlacklistHandler) + guildAuthApi.GET("/blacklist", api.GetBlacklistHandler) + guildAuthApi.PUT("/blacklist", api.AddBlacklistHandler) + guildAuthApi.DELETE("/blacklist/:user", api.RemoveBlacklistHandler) - guildAuthApi.GET("/:id/panels", api.ListPanels) - guildAuthApi.PUT("/:id/panels", api.CreatePanel) - guildAuthApi.DELETE("/:id/panels/:message", api.DeletePanel) + guildAuthApi.GET("/panels", api.ListPanels) + guildAuthApi.PUT("/panels", api.CreatePanel) + guildAuthApi.DELETE("/panels/:message", api.DeletePanel) - guildAuthApi.GET("/:id/logs/", api.GetLogs) - guildAuthApi.GET("/:id/modmail/logs/", api.GetModmailLogs) + guildAuthApi.GET("/logs/", api.GetLogs) + guildAuthApi.GET("/modmail/logs/", api.GetModmailLogs) - guildAuthApi.GET("/:id/tickets", api.GetTickets) - guildAuthApi.GET("/:id/tickets/:ticketId", api.GetTicket) - guildAuthApi.POST("/:id/tickets/:ticketId", api.SendMessage) - guildAuthApi.DELETE("/:id/tickets/:ticketId", api.CloseTicket) + guildAuthApi.GET("/tickets", api.GetTickets) + guildAuthApi.GET("/tickets/:ticketId", api.GetTicket) + guildAuthApi.POST("/tickets/:ticketId", api.SendMessage) + guildAuthApi.DELETE("/tickets/:ticketId", api.CloseTicket) - guildAuthApi.GET("/:id/tags", api.TagsListHandler) - guildAuthApi.PUT("/:id/tags", api.CreateTag) - guildAuthApi.DELETE("/:id/tags/:tag", api.DeleteTag) + guildAuthApi.GET("/tags", api.TagsListHandler) + guildAuthApi.PUT("/tags", api.CreateTag) + guildAuthApi.DELETE("/tags/:tag", api.DeleteTag) - guildAuthApi.GET("/:id/claimsettings", api.GetClaimSettings) - guildAuthApi.POST("/:id/claimsettings", api.PostClaimSettings) + guildAuthApi.GET("/claimsettings", api.GetClaimSettings) + guildAuthApi.POST("/claimsettings", api.PostClaimSettings) + + guildAuthApi.GET("/autoclose", api.GetAutoClose) + guildAuthApi.POST("/autoclose", api.PostAutoClose) } userGroup := router.Group("/user", middleware.AuthenticateToken) diff --git a/go.mod b/go.mod index 67571a4..6565992 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/BurntSushi/toml v0.3.1 github.com/TicketsBot/archiverclient v0.0.0-20200425115930-0ca198cc8306 github.com/TicketsBot/common v0.0.0-20200529141045-7426ad13f1a4 - github.com/TicketsBot/database v0.0.0-20200530221201-9ed09caec466 + github.com/TicketsBot/database v0.0.0-20200603195715-ce3003c9764c github.com/apex/log v1.1.2 github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible diff --git a/public/templates/views/settings.tmpl b/public/templates/views/settings.tmpl index 257c4c2..dd0064e 100644 --- a/public/templates/views/settings.tmpl +++ b/public/templates/views/settings.tmpl @@ -2,7 +2,7 @@
-
+

Settings

@@ -19,12 +19,23 @@
- - + +
-
+
@@ -110,11 +121,9 @@
-
- -
-
+ +

Claim Settings

@@ -122,7 +131,7 @@
-
+
@@ -130,7 +139,7 @@
-
+
@@ -140,6 +149,96 @@
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ +
+
+
+

Auto-Close

+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+
d
+
+
+
+ +
+
h
+
+
+
+ +
+
m
+
+
+
+
+
+
+
+ +
+
+ +
+
d
+
+
+
+ +
+
h
+
+
+
+ +
+
m
+
+
+
+
+
+
+
@@ -156,11 +255,6 @@
-
-
-
-
- + +