refactor(vouchers): move voucher routes out of /enakgame
Vouchers are what EnakPoint is redeemed for, wherever it came from, so they are not part of EnakGame. Their only link to it is the budget attribution, which does not change. - Admin: /marketing/enakgame/vouchers... -> /marketing/vouchers... - Customer: /customer/enakgame/vouchers -> /customer/vouchers, /customer/enakgame/vouchers/:id/redeem -> /customer/vouchers/:id/redeem, /customer/enakgame/redemptions -> /customer/vouchers/redemptions Roles, handlers and logic stay the same. No client calls these endpoints yet. RFC §7.4 and §11 updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
18e87398bb
commit
1bb071aec6
+18
-10
@@ -197,10 +197,13 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
|
||||
enakGame.GET("/sessions", r.enakGameCustomerHandler.ListSessions)
|
||||
enakGame.GET("/sessions/:id", r.enakGameCustomerHandler.GetSession)
|
||||
enakGame.POST("/sessions/:id/complete", r.enakGameCustomerHandler.CompleteSession)
|
||||
enakGame.GET("/vouchers", r.enakGameCustomerHandler.ListVouchers)
|
||||
enakGame.POST("/vouchers/:id/redeem", r.enakGameCustomerHandler.RedeemVoucher)
|
||||
enakGame.GET("/redemptions", r.enakGameCustomerHandler.ListRedemptions)
|
||||
}
|
||||
|
||||
// Vouchers: what EnakPoint is spent on, whatever it came from (docs/rfc-enakgame.md
|
||||
// §5.7, §7.4), so not under /enakgame.
|
||||
customer.GET("/vouchers", r.enakGameCustomerHandler.ListVouchers)
|
||||
customer.GET("/vouchers/redemptions", r.enakGameCustomerHandler.ListRedemptions)
|
||||
customer.POST("/vouchers/:id/redeem", r.enakGameCustomerHandler.RedeemVoucher)
|
||||
}
|
||||
|
||||
selfOrder := v1.Group("/self-order")
|
||||
@@ -634,14 +637,19 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
|
||||
enakGame.POST("/events", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.CreateEvent)
|
||||
enakGame.PUT("/events/:id", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.UpdateEvent)
|
||||
enakGame.PUT("/events/:id/status", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.SetEventStatus)
|
||||
}
|
||||
|
||||
enakGame.GET("/vouchers", r.enakGameAdminHandler.ListVouchers)
|
||||
enakGame.GET("/vouchers/:id", r.enakGameAdminHandler.GetVoucher)
|
||||
enakGame.GET("/vouchers/:id/codes", r.enakGameAdminHandler.ListVoucherCodes)
|
||||
enakGame.POST("/vouchers", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.CreateVoucher)
|
||||
enakGame.PUT("/vouchers/:id", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.UpdateVoucher)
|
||||
enakGame.PUT("/vouchers/:id/status", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.SetVoucherStatus)
|
||||
enakGame.POST("/vouchers/:id/codes", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.ImportVoucherCodes)
|
||||
// Vouchers EnakPoint is redeemed for, whatever it came from; not part of
|
||||
// EnakGame. Writing them takes a loyalty manager.
|
||||
vouchers := gamification.Group("/vouchers")
|
||||
{
|
||||
vouchers.GET("", r.enakGameAdminHandler.ListVouchers)
|
||||
vouchers.GET("/:id", r.enakGameAdminHandler.GetVoucher)
|
||||
vouchers.GET("/:id/codes", r.enakGameAdminHandler.ListVoucherCodes)
|
||||
vouchers.POST("", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.CreateVoucher)
|
||||
vouchers.PUT("/:id", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.UpdateVoucher)
|
||||
vouchers.PUT("/:id/status", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.SetVoucherStatus)
|
||||
vouchers.POST("/:id/codes", r.authMiddleware.RequireLoyaltyManager(), r.enakGameAdminHandler.ImportVoucherCodes)
|
||||
}
|
||||
|
||||
campaignRules := gamification.Group("/campaign-rules")
|
||||
|
||||
Reference in New Issue
Block a user