Merge remote-tracking branch 'origin/feature/notification' into self-order+notification
# Conflicts: # go.mod # go.sum # internal/app/app.go # internal/router/router.go
This commit is contained in:
@@ -46,12 +46,14 @@ type Router struct {
|
||||
customerAuthHandler *handler.CustomerAuthHandler
|
||||
customerPointsHandler *handler.CustomerPointsHandler
|
||||
spinGameHandler *handler.SpinGameHandler
|
||||
userDeviceHandler *handler.UserDeviceHandler
|
||||
notificationHandler *handler.NotificationHandler
|
||||
selfOrderHandler *handler.SelfOrderHandler
|
||||
authMiddleware *middleware.AuthMiddleware
|
||||
customerAuthMiddleware *middleware.CustomerAuthMiddleware
|
||||
}
|
||||
|
||||
func NewRouter(cfg *config.Config, healthHandler *handler.HealthHandler, authService service.AuthService, authMiddleware *middleware.AuthMiddleware, userService *service.UserServiceImpl, userValidator *validator.UserValidatorImpl, organizationService service.OrganizationService, organizationValidator validator.OrganizationValidator, outletService service.OutletService, outletValidator validator.OutletValidator, outletSettingService service.OutletSettingService, categoryService service.CategoryService, categoryValidator validator.CategoryValidator, productService service.ProductService, productValidator validator.ProductValidator, productVariantService service.ProductVariantService, productVariantValidator validator.ProductVariantValidator, inventoryService service.InventoryService, inventoryValidator validator.InventoryValidator, orderService service.OrderService, orderValidator validator.OrderValidator, fileService service.FileService, fileValidator validator.FileValidator, customerService service.CustomerService, customerValidator validator.CustomerValidator, paymentMethodService service.PaymentMethodService, paymentMethodValidator validator.PaymentMethodValidator, analyticsService *service.AnalyticsServiceImpl, reportService service.ReportService, tableService *service.TableServiceImpl, tableValidator *validator.TableValidator, unitService handler.UnitService, ingredientService handler.IngredientService, productRecipeService service.ProductRecipeService, vendorService service.VendorService, vendorValidator validator.VendorValidator, purchaseOrderService service.PurchaseOrderService, purchaseOrderValidator validator.PurchaseOrderValidator, unitConverterService service.IngredientUnitConverterService, unitConverterValidator validator.IngredientUnitConverterValidator, chartOfAccountTypeService service.ChartOfAccountTypeService, chartOfAccountTypeValidator validator.ChartOfAccountTypeValidator, chartOfAccountService service.ChartOfAccountService, chartOfAccountValidator validator.ChartOfAccountValidator, accountService service.AccountService, accountValidator validator.AccountValidator, orderIngredientTransactionService service.OrderIngredientTransactionService, orderIngredientTransactionValidator validator.OrderIngredientTransactionValidator, gamificationService service.GamificationService, gamificationValidator validator.GamificationValidator, rewardService service.RewardService, rewardValidator validator.RewardValidator, campaignService service.CampaignService, campaignValidator validator.CampaignValidator, customerAuthService service.CustomerAuthService, customerAuthValidator validator.CustomerAuthValidator, customerPointsService service.CustomerPointsService, spinGameService service.SpinGameService, customerAuthMiddleware *middleware.CustomerAuthMiddleware, selfOrderHandler *handler.SelfOrderHandler) *Router {
|
||||
func NewRouter(cfg *config.Config, healthHandler *handler.HealthHandler, authService service.AuthService, authMiddleware *middleware.AuthMiddleware, userService *service.UserServiceImpl, userValidator *validator.UserValidatorImpl, organizationService service.OrganizationService, organizationValidator validator.OrganizationValidator, outletService service.OutletService, outletValidator validator.OutletValidator, outletSettingService service.OutletSettingService, categoryService service.CategoryService, categoryValidator validator.CategoryValidator, productService service.ProductService, productValidator validator.ProductValidator, productVariantService service.ProductVariantService, productVariantValidator validator.ProductVariantValidator, inventoryService service.InventoryService, inventoryValidator validator.InventoryValidator, orderService service.OrderService, orderValidator validator.OrderValidator, fileService service.FileService, fileValidator validator.FileValidator, customerService service.CustomerService, customerValidator validator.CustomerValidator, paymentMethodService service.PaymentMethodService, paymentMethodValidator validator.PaymentMethodValidator, analyticsService *service.AnalyticsServiceImpl, reportService service.ReportService, tableService *service.TableServiceImpl, tableValidator *validator.TableValidator, unitService handler.UnitService, ingredientService handler.IngredientService, productRecipeService service.ProductRecipeService, vendorService service.VendorService, vendorValidator validator.VendorValidator, purchaseOrderService service.PurchaseOrderService, purchaseOrderValidator validator.PurchaseOrderValidator, unitConverterService service.IngredientUnitConverterService, unitConverterValidator validator.IngredientUnitConverterValidator, chartOfAccountTypeService service.ChartOfAccountTypeService, chartOfAccountTypeValidator validator.ChartOfAccountTypeValidator, chartOfAccountService service.ChartOfAccountService, chartOfAccountValidator validator.ChartOfAccountValidator, accountService service.AccountService, accountValidator validator.AccountValidator, orderIngredientTransactionService service.OrderIngredientTransactionService, orderIngredientTransactionValidator validator.OrderIngredientTransactionValidator, gamificationService service.GamificationService, gamificationValidator validator.GamificationValidator, rewardService service.RewardService, rewardValidator validator.RewardValidator, campaignService service.CampaignService, campaignValidator validator.CampaignValidator, customerAuthService service.CustomerAuthService, customerAuthValidator validator.CustomerAuthValidator, customerPointsService service.CustomerPointsService, spinGameService service.SpinGameService, customerAuthMiddleware *middleware.CustomerAuthMiddleware, userDeviceService service.UserDeviceService, userDeviceValidator validator.UserDeviceValidator, notificationService service.NotificationService, notificationValidator validator.NotificationValidator, selfOrderHandler *handler.SelfOrderHandler) *Router {
|
||||
|
||||
return &Router{
|
||||
config: cfg,
|
||||
@@ -90,6 +92,8 @@ func NewRouter(cfg *config.Config, healthHandler *handler.HealthHandler, authSer
|
||||
authMiddleware: authMiddleware,
|
||||
customerAuthMiddleware: customerAuthMiddleware,
|
||||
productVariantHandler: handler.NewProductVariantHandler(productVariantService, productVariantValidator),
|
||||
userDeviceHandler: handler.NewUserDeviceHandler(userDeviceService, userDeviceValidator),
|
||||
notificationHandler: handler.NewNotificationHandler(notificationService, notificationValidator),
|
||||
selfOrderHandler: selfOrderHandler,
|
||||
}
|
||||
}
|
||||
@@ -571,6 +575,42 @@ func (r *Router) addAppRoutes(rg *gin.Engine) {
|
||||
// Reports
|
||||
outlets.GET("/:outlet_id/reports/daily-transaction.pdf", r.reportHandler.GetDailyTransactionReportPDF)
|
||||
}
|
||||
|
||||
// User device routes - accessible by authenticated users for their own devices
|
||||
userDevices := protected.Group("/user-devices")
|
||||
{
|
||||
userDevices.POST("/register", r.userDeviceHandler.RegisterDevice)
|
||||
userDevices.GET("/me", r.userDeviceHandler.GetMyDevices)
|
||||
userDevices.GET("/:id", r.userDeviceHandler.GetDevice)
|
||||
userDevices.PUT("/:id", r.userDeviceHandler.UpdateDevice)
|
||||
userDevices.DELETE("/:id", r.userDeviceHandler.DeleteDevice)
|
||||
}
|
||||
|
||||
// Admin-only user device routes
|
||||
adminUserDevices := protected.Group("/user-devices")
|
||||
adminUserDevices.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
adminUserDevices.GET("", r.userDeviceHandler.ListDevices)
|
||||
adminUserDevices.GET("/user/:user_id", r.userDeviceHandler.GetDevicesByUser)
|
||||
}
|
||||
|
||||
// Notification routes - authenticated users manage their own notifications
|
||||
notifications := protected.Group("/notifications")
|
||||
{
|
||||
notifications.GET("", r.notificationHandler.List)
|
||||
notifications.GET("/:id", r.notificationHandler.GetByID)
|
||||
notifications.PUT("/:id/read", r.notificationHandler.MarkAsRead)
|
||||
notifications.PUT("/read-all", r.notificationHandler.MarkAllAsRead)
|
||||
notifications.DELETE("/:id", r.notificationHandler.Delete)
|
||||
}
|
||||
|
||||
// Admin notification routes - send and broadcast
|
||||
adminNotifications := protected.Group("/notifications")
|
||||
adminNotifications.Use(r.authMiddleware.RequireAdminOrManager())
|
||||
{
|
||||
adminNotifications.POST("/send", r.notificationHandler.Send)
|
||||
adminNotifications.POST("/broadcast", r.notificationHandler.Broadcast)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user