This commit is contained in:
Aditya Siregar
2025-08-15 21:17:19 +07:00
parent de60983e4e
commit 826c5d26ad
65 changed files with 2625 additions and 669 deletions
+18 -1
View File
@@ -12,6 +12,8 @@ type UserHandler interface {
UpdateProfile(c *gin.Context)
ChangePassword(c *gin.Context)
ListTitles(c *gin.Context)
GetActiveUsersForMention(c *gin.Context)
BulkCreateUsers(c *gin.Context)
}
type FileHandler interface {
@@ -62,7 +64,8 @@ type LetterHandler interface {
DeleteIncomingLetter(c *gin.Context)
CreateDispositions(c *gin.Context)
ListDispositionsByLetter(c *gin.Context)
//ListDispositionsByLetter(c *gin.Context)
GetEnhancedDispositionsByLetter(c *gin.Context)
CreateDiscussion(c *gin.Context)
UpdateDiscussion(c *gin.Context)
@@ -75,3 +78,17 @@ type DispositionRouteHandler interface {
ListByFromDept(c *gin.Context)
SetActive(c *gin.Context)
}
type VoteEventHandler interface {
CreateVoteEvent(c *gin.Context)
GetVoteEvent(c *gin.Context)
GetActiveEvents(c *gin.Context)
ListVoteEvents(c *gin.Context)
UpdateVoteEvent(c *gin.Context)
DeleteVoteEvent(c *gin.Context)
CreateCandidate(c *gin.Context)
SubmitVote(c *gin.Context)
GetVoteResults(c *gin.Context)
CheckVoteStatus(c *gin.Context)
GetCandidates(c *gin.Context)
}
+34 -3
View File
@@ -18,6 +18,7 @@ type Router struct {
masterHandler MasterHandler
letterHandler LetterHandler
dispRouteHandler DispositionRouteHandler
voteEventHandler VoteEventHandler
}
func NewRouter(
@@ -31,6 +32,7 @@ func NewRouter(
masterHandler MasterHandler,
letterHandler LetterHandler,
dispRouteHandler DispositionRouteHandler,
voteEventHandler VoteEventHandler,
) *Router {
return &Router{
config: cfg,
@@ -43,6 +45,7 @@ func NewRouter(
masterHandler: masterHandler,
letterHandler: letterHandler,
dispRouteHandler: dispRouteHandler,
voteEventHandler: voteEventHandler,
}
}
@@ -50,12 +53,12 @@ func (r *Router) Init() *gin.Engine {
gin.SetMode(gin.ReleaseMode)
engine := gin.New()
engine.Use(
middleware.CORS(),
middleware.JsonAPI(),
middleware.CorrelationID(),
middleware.Recover(),
middleware.HTTPStatLogger(),
middleware.PopulateContext(),
middleware.CORS(),
)
r.addAppRoutes(engine)
@@ -78,10 +81,12 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
users.Use(r.authMiddleware.RequireAuth())
{
users.GET("", r.authMiddleware.RequirePermissions("user.read"), r.userHandler.ListUsers)
users.POST("/bulk", r.userHandler.BulkCreateUsers)
users.GET("/profile", r.userHandler.GetProfile)
users.PUT("/profile", r.userHandler.UpdateProfile)
users.PUT(":id/password", r.userHandler.ChangePassword)
users.GET("/titles", r.userHandler.ListTitles)
users.GET("/mention", r.userHandler.GetActiveUsersForMention)
users.POST("/profile/avatar", r.fileHandler.UploadProfileAvatar)
}
@@ -139,7 +144,7 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
lettersch.DELETE("/incoming/:id", r.letterHandler.DeleteIncomingLetter)
lettersch.POST("/dispositions/:letter_id", r.letterHandler.CreateDispositions)
lettersch.GET("/dispositions/:letter_id", r.letterHandler.ListDispositionsByLetter)
lettersch.GET("/dispositions/:letter_id", r.letterHandler.GetEnhancedDispositionsByLetter)
lettersch.POST("/discussions/:letter_id", r.letterHandler.CreateDiscussion)
lettersch.PUT("/discussions/:letter_id/:discussion_id", r.letterHandler.UpdateDiscussion)
@@ -151,8 +156,34 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
droutes.POST("", r.dispRouteHandler.Create)
droutes.GET(":id", r.dispRouteHandler.Get)
droutes.PUT(":id", r.dispRouteHandler.Update)
droutes.GET("from/:from_department_id", r.dispRouteHandler.ListByFromDept)
droutes.GET("department", r.dispRouteHandler.ListByFromDept)
droutes.PUT(":id/active", r.dispRouteHandler.SetActive)
}
voteEvents := v1.Group("/vote-events")
voteEvents.Use(r.authMiddleware.RequireAuth())
{
voteEvents.POST("", r.voteEventHandler.CreateVoteEvent)
voteEvents.GET("", r.voteEventHandler.ListVoteEvents)
voteEvents.GET("/active", r.voteEventHandler.GetActiveEvents)
voteEvents.GET("/:id", r.voteEventHandler.GetVoteEvent)
voteEvents.PUT("/:id", r.voteEventHandler.UpdateVoteEvent)
voteEvents.DELETE("/:id", r.voteEventHandler.DeleteVoteEvent)
voteEvents.GET("/:id/candidates", r.voteEventHandler.GetCandidates)
voteEvents.GET("/:id/results", r.voteEventHandler.GetVoteResults)
voteEvents.GET("/:id/vote-status", r.voteEventHandler.CheckVoteStatus)
}
candidates := v1.Group("/candidates")
candidates.Use(r.authMiddleware.RequireAuth())
{
candidates.POST("", r.voteEventHandler.CreateCandidate)
}
votes := v1.Group("/votes")
votes.Use(r.authMiddleware.RequireAuth())
{
votes.POST("", r.voteEventHandler.SubmitVote)
}
}
}