package client_approval_settings import ( "web-medols-be/app/module/client_approval_settings/controller" "web-medols-be/app/module/client_approval_settings/repository" "web-medols-be/app/module/client_approval_settings/service" "github.com/gofiber/fiber/v2" "go.uber.org/fx" ) // ClientApprovalSettingsRouter struct of ClientApprovalSettingsRouter type ClientApprovalSettingsRouter struct { App fiber.Router Controller controller.ClientApprovalSettingsController } // NewClientApprovalSettingsModule register bulky of ClientApprovalSettings module var NewClientApprovalSettingsModule = fx.Options( fx.Provide(repository.NewClientApprovalSettingsRepository), fx.Provide(service.NewClientApprovalSettingsService), fx.Provide(controller.NewClientApprovalSettingsController), fx.Provide(NewClientApprovalSettingsRouter), ) // NewClientApprovalSettingsRouter create new ClientApprovalSettingsRouter func NewClientApprovalSettingsRouter( app *fiber.App, controller controller.ClientApprovalSettingsController, ) *ClientApprovalSettingsRouter { return &ClientApprovalSettingsRouter{ App: app, Controller: controller, } } // RegisterClientApprovalSettingsRoutes register routes of ClientApprovalSettings func (r *ClientApprovalSettingsRouter) RegisterClientApprovalSettingsRoutes() { // Group routes under /api/v1/client-approval-settings api := r.App.Group("/api/v1/client-approval-settings") // Basic CRUD routes api.Get("/", r.Controller.GetSettings) api.Put("/", r.Controller.UpdateSettings) api.Delete("/", r.Controller.DeleteSettings) // Approval management routes api.Post("/toggle-approval", r.Controller.ToggleApproval) api.Post("/enable-approval", r.Controller.EnableApproval) api.Post("/disable-approval", r.Controller.DisableApproval) api.Put("/default-workflow", r.Controller.SetDefaultWorkflow) // Exemption management routes api.Post("/exempt-users", r.Controller.ManageExemptUsers) api.Post("/exempt-roles", r.Controller.ManageExemptRoles) api.Post("/exempt-categories", r.Controller.ManageExemptCategories) }