404 lines
20 KiB
Go
404 lines
20 KiB
Go
package routes
|
|
|
|
import (
|
|
"gestion/db"
|
|
"gestion/handlers"
|
|
"gestion/middleware"
|
|
"gestion/services"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func SetupRoutes(router *gin.Engine, database *db.Database, geoService *services.GeoService) {
|
|
|
|
// ============================================
|
|
// 🔐 MIDDLEWARE GLOBAL
|
|
// ============================================
|
|
router.Use(func(c *gin.Context) {
|
|
c.Set("database", database)
|
|
c.Set("geoService", geoService)
|
|
})
|
|
|
|
// ============================================
|
|
// 📋 PATTERN v1: CLIENT API
|
|
// ============================================
|
|
|
|
// ============================================
|
|
// 👤 AUTH ROUTES (v1) - PUBLIC
|
|
// ============================================
|
|
authGroupV1 := router.Group("/api/v1/auth")
|
|
{
|
|
authGroupV1.POST("/login", middleware.LoginRateLimitMiddleware, handlers.LoginClient)
|
|
authGroupV1.POST("/logout", handlers.LogoutClient)
|
|
authGroupV1.POST("/2fa/verify", middleware.LoginRateLimitMiddleware, handlers.Verify2FAClient)
|
|
}
|
|
|
|
// Route change-password (auth client requise)
|
|
authProtectedV1 := router.Group("/api/v1/auth")
|
|
authProtectedV1.Use(middleware.ClientMiddleware)
|
|
{
|
|
authProtectedV1.PUT("/change-password", handlers.ChangePassword)
|
|
}
|
|
|
|
// ============================================
|
|
// 📦 PRODUITS & CATÉGORIES (v1) - PUBLIC (SANS middleware!)
|
|
// ============================================
|
|
productsGroupV1 := router.Group("/api/v1")
|
|
{
|
|
productsGroupV1.GET("/products", handlers.GetAllProducts)
|
|
productsGroupV1.GET("/products/:id", handlers.GetProductByID)
|
|
productsGroupV1.GET("/products/category/:category", handlers.GetProductsByCategory)
|
|
productsGroupV1.GET("/categories", handlers.GetCategories)
|
|
productsGroupV1.GET("/app-settings", handlers.GetPublicSettings)
|
|
}
|
|
|
|
// ============================================
|
|
// 🛒 PANIER (v1) - AVEC CLIENT MIDDLEWARE + SESSION
|
|
// ============================================
|
|
cartGroupV1 := router.Group("/api/v1")
|
|
cartGroupV1.Use(middleware.ClientMiddleware)
|
|
cartGroupV1.Use(middleware.ClientSessionMiddleware)
|
|
cartGroupV1.Use(middleware.RateLimitMiddleware)
|
|
{
|
|
// Panier
|
|
cartGroupV1.POST("/panier/add", handlers.AddProductsBasket)
|
|
cartGroupV1.GET("/panier/:username", handlers.GetAllBaskets)
|
|
cartGroupV1.DELETE("/panier/remove", handlers.DeleteProductFromBasket)
|
|
cartGroupV1.DELETE("/panier/clear", handlers.ClearBasket)
|
|
|
|
// Commandes
|
|
cartGroupV1.POST("/checkout", middleware.OrderHoursMiddleware, middleware.BlockClientIfPenalty, handlers.ValidateBasket) // ✅ Auto-assign GPS
|
|
cartGroupV1.GET("/my-commands", handlers.GetMyCommandsWithTracking) // ✅ Avec suivi
|
|
|
|
// ⭐ NOUVEAUX - SUIVI CLIENT TEMPS RÉEL
|
|
cartGroupV1.GET("/commands/:id/eta", handlers.GetOrderETA)
|
|
cartGroupV1.GET("/commands/:id/status", handlers.GetCommandStatus)
|
|
cartGroupV1.GET("/commands/:id/tracking", handlers.GetCommandTracking)
|
|
cartGroupV1.GET("/commands/:id", handlers.GetCommandByID)
|
|
cartGroupV1.GET("/commands/:id/items", handlers.GetCommandItemsWithDetails)
|
|
// Approbation livraison
|
|
cartGroupV1.POST("/commands/:id/approve", handlers.ApproveDelivery)
|
|
cartGroupV1.POST("/commands/:id/address/respond", handlers.RespondToAddressProposal)
|
|
// ⭐ NOUVEAU - HISTORIQUE DES COMMANDES TERMINÉES
|
|
cartGroupV1.GET("/my-commands/history/detailed", handlers.GetMyCompletedOrdersWithItems)
|
|
cartGroupV1.GET("/commands/:id/history", handlers.GetOrderHistory)
|
|
// ⭐ NOUVEAU - ANNULATION DE COMMANDE (CLIENT)
|
|
cartGroupV1.POST("/commands/:id/cancel", handlers.CancelCommandByClient)
|
|
cartGroupV1.GET("/my-cancellation-history", handlers.GetMyCancellationHistory)
|
|
|
|
// ⭐ NOUVEAU - HISTORIQUE DES COMMANDES TERMINÉES
|
|
cartGroupV1.GET("/my-commands/history", handlers.GetClientCommandsHistory)
|
|
// ⭐⭐ PÉNALITÉS CLIENT
|
|
cartGroupV1.GET("/penalties", handlers.GetMyPenalties) // Voir mes pénalités
|
|
|
|
// 🔔 NOTIFICATIONS CLIENT
|
|
cartGroupV1.GET("/notifications", handlers.GetClientNotifications)
|
|
cartGroupV1.POST("/notifications/read", handlers.MarkNotificationsRead)
|
|
|
|
// 🤖 TELEGRAM CLIENT
|
|
cartGroupV1.POST("/telegram/link-token", handlers.GenerateClientLinkToken)
|
|
cartGroupV1.GET("/telegram/status", handlers.GetClientTelegramStatus)
|
|
cartGroupV1.DELETE("/telegram/unlink", handlers.UnlinkClientTelegram)
|
|
|
|
// 👤 PROFIL CLIENT
|
|
cartGroupV1.GET("/profile", handlers.GetMyProfile) // ✅ Récupérer mon profil
|
|
cartGroupV1.PUT("/profile/update", handlers.UpdateMyProfile) // ✅ Modifier mon profil
|
|
|
|
// 🔐 2FA CLIENT
|
|
cartGroupV1.GET("/two-fa/status", handlers.GetClient2FAStatus)
|
|
cartGroupV1.POST("/two-fa/toggle", handlers.ToggleClient2FA)
|
|
|
|
// 🎁 PARRAINAGE CLIENT
|
|
cartGroupV1.GET("/referral/balance", handlers.GetMyReferralBalance)
|
|
cartGroupV1.GET("/parrain", handlers.GetMyParrainInfo)
|
|
|
|
// 🏆 POINTS & RÉCOMPENSES CLIENT
|
|
cartGroupV1.GET("/points/rewards", handlers.GetMyPointsRewards)
|
|
cartGroupV1.POST("/points/claim", handlers.ClaimMyReward)
|
|
|
|
// 💸 STATUT PAIEMENT CRYPTO
|
|
cartGroupV1.GET("/commands/:id/payment-status", handlers.GetCommandPaymentStatus)
|
|
}
|
|
|
|
// ============================================
|
|
// 💸 WEBHOOK NOWPAYMENTS (v1) - PUBLIC (pas d'auth, vérifié par HMAC)
|
|
// ============================================
|
|
router.POST("/api/v1/webhook/nowpayments", handlers.IPNWebhook)
|
|
|
|
// ============================================
|
|
// 🤖 WEBHOOK TELEGRAM - PUBLIC (sécurisé par secret header)
|
|
// ============================================
|
|
router.POST("/webhook/telegram", handlers.TelegramWebhook)
|
|
|
|
// ============================================
|
|
// 🔗 LIAISON INTERNE TELEGRAM (appelée par LBTelegram)
|
|
// ============================================
|
|
router.POST("/api/internal/telegram/link", handlers.InternalTelegramLink)
|
|
|
|
// ============================================
|
|
// 📋 PATTERN v2: ADMIN API
|
|
// ============================================
|
|
|
|
// ============================================
|
|
// 👤 ADMIN AUTH (v2) - PUBLIC
|
|
// ============================================
|
|
adminAuthGroupV2 := router.Group("/api/v2/admin/auth")
|
|
{
|
|
adminAuthGroupV2.POST("/login", middleware.LoginRateLimitMiddleware, handlers.LoginAdmin)
|
|
adminAuthGroupV2.POST("/logout", handlers.LogoutAdmin)
|
|
}
|
|
|
|
// ============================================
|
|
// 🔒 ADMIN PROTECTED (v2) - AVEC ADMIN MIDDLEWARE
|
|
// ============================================
|
|
adminGroupV2 := router.Group("/api/v2/admin/protected")
|
|
adminGroupV2.Use(middleware.AdminMiddleware)
|
|
{
|
|
// 🔔 NOTIFICATIONS ADMIN
|
|
adminGroupV2.GET("/notifications", handlers.GetLivreurNotifications)
|
|
adminGroupV2.POST("/notifications/read", handlers.MarkLivreurNotificationsRead)
|
|
|
|
// 🤖 TELEGRAM ADMIN
|
|
adminGroupV2.POST("/telegram/link-token", handlers.GenerateAdminLinkToken)
|
|
adminGroupV2.DELETE("/telegram/unlink", handlers.UnlinkAdminTelegram)
|
|
|
|
// ============================================
|
|
// CLIENT - GESTION
|
|
// ============================================
|
|
adminGroupV2.GET("/all/clients", handlers.GetAllClients)
|
|
adminGroupV2.GET("/all/users", handlers.GetAllUsers)
|
|
// ⭐⭐ MODIFICATION DE PROFILS PAR ADMIN
|
|
adminGroupV2.PUT("/clients/:id", handlers.UpdateClientByAdmin) // ✅ Modifier un client
|
|
adminGroupV2.PUT("/users/:id", handlers.UpdateUserByAdmin) // ✅ Modifier un user
|
|
adminGroupV2.POST("/clients", handlers.AdminCreateClient)
|
|
adminGroupV2.DELETE("/clients/:id", handlers.DeleteClient)
|
|
adminGroupV2.DELETE("/users/:id", handlers.DeleteUser)
|
|
adminGroupV2.POST("/users", handlers.CreateUser)
|
|
// Get location livreur
|
|
adminGroupV2.GET("/commands/:id/deliveryman/location", handlers.GetDeliverymanLocationForCommand)
|
|
// ============================================
|
|
// ADDRESSES - GESTION
|
|
// ============================================
|
|
adminGroupV2.POST("/add/address", handlers.AddAddress)
|
|
adminGroupV2.DELETE("/delete/address", handlers.DeleteAddress)
|
|
adminGroupV2.GET("/addresses", handlers.GetAllAddress)
|
|
// ============================================
|
|
// PRODUITS - GESTION
|
|
// ============================================
|
|
adminGroupV2.POST("/products", handlers.CreateProduct)
|
|
adminGroupV2.GET("/products", handlers.GetAllProducts)
|
|
adminGroupV2.GET("/products/:id", handlers.GetProductByID)
|
|
adminGroupV2.PUT("/products/:id", handlers.UpdateProduct)
|
|
adminGroupV2.DELETE("/products/:id", handlers.DeleteProduct)
|
|
adminGroupV2.POST("/products/:id/media", handlers.UploadMedia)
|
|
adminGroupV2.DELETE("/products/:id/media/:media_id", handlers.DeleteMedia)
|
|
adminGroupV2.POST("/products/:id/stock", handlers.UpdateStock)
|
|
// ============================================
|
|
// CATÉGORIES - GESTION ADMIN
|
|
// ============================================
|
|
adminGroupV2.POST("/categories", handlers.CreateCategory)
|
|
adminGroupV2.PUT("/categories/:id", handlers.UpdateCategory)
|
|
adminGroupV2.DELETE("/categories/:id", handlers.DeleteCategory)
|
|
// ============================================
|
|
// STATISTIQUES ADMIN
|
|
// ============================================
|
|
adminGroupV2.GET("/stats", handlers.GetAdminStats)
|
|
|
|
adminGroupV2.POST("/active/product/price/:id", handlers.ActivePrice)
|
|
adminGroupV2.POST("/desactive/product/price/:id", handlers.DesActivePrice)
|
|
|
|
// ============================================
|
|
// COMMANDES - GESTION DE BASE
|
|
// ============================================
|
|
adminGroupV2.GET("/orders", handlers.GetAllCommands)
|
|
adminGroupV2.GET("/orders/export/csv", handlers.ExportApprovedCommandsCSV)
|
|
adminGroupV2.GET("/orders/:id", handlers.GetCommandByID)
|
|
adminGroupV2.PUT("/orders/:id/address", handlers.UpdateCommandAddress)
|
|
adminGroupV2.POST("/orders/:id/propose-address", handlers.ProposeAddressChange)
|
|
adminGroupV2.PUT("/orders/:id/status", handlers.UpdateCommandStatusAdmin)
|
|
adminGroupV2.POST("/orders/:id/force-validate", handlers.ValidateDelivery)
|
|
adminGroupV2.POST("/orders/:id/confirm-reception", handlers.StaffApproveDelivery)
|
|
adminGroupV2.POST("/orders/:id/notify-client", handlers.NotifyClientToDescend)
|
|
adminGroupV2.GET("/orders/:id/items", handlers.ShowItems)
|
|
adminGroupV2.DELETE("/orders/:id/items/:item_id", handlers.DeleteCommandItem)
|
|
adminGroupV2.DELETE("/orders/:id", handlers.DeleteCommandByCabine)
|
|
|
|
// ============================================
|
|
// ⭐ AUTO-ASSIGNATION GPS - ROUTES CRITIQUES
|
|
// ============================================
|
|
adminGroupV2.POST("/orders/:id/auto-assign", handlers.AutoAssignNearestDeliveryPerson)
|
|
adminGroupV2.POST("/orders/auto-assign-all", handlers.AutoAssignAllPendingCommands)
|
|
|
|
// ============================================
|
|
// RECHERCHE DU LIVREUR LE PLUS PROCHE
|
|
// ============================================
|
|
adminGroupV2.POST("/delivery/nearest", handlers.FindNearestDeliveryPerson)
|
|
adminGroupV2.POST("/delivery/distances", handlers.GetAllDeliveryDistances)
|
|
|
|
// ============================================
|
|
// GESTION DES QUEUES DES LIVREURS
|
|
// ============================================
|
|
adminGroupV2.GET("/delivery/queues", handlers.GetAllDeliveryQueues)
|
|
adminGroupV2.GET("/delivery/:username/queue", handlers.GetDeliverymanQueue)
|
|
|
|
// ============================================
|
|
// GÉOCODAGE (Admin uniquement)
|
|
// ============================================
|
|
adminGroupV2.POST("/validate-address", handlers.ValidateAddress)
|
|
adminGroupV2.POST("/geocode", handlers.GeocodeAddress)
|
|
|
|
// ============================================
|
|
// GESTION LIVREURS
|
|
// ============================================
|
|
adminGroupV2.GET("/delivery-persons", handlers.GetAvailableDeliveryPersons)
|
|
adminGroupV2.GET("/delivery-persons/:username", handlers.GetDeliveryPersonDetails)
|
|
adminGroupV2.POST("/delivery-persons/:username/assign/:command_id", handlers.AssignDeliveryPerson)
|
|
adminGroupV2.PUT("/delivery-persons/:username/status", handlers.UpdateDeliveryPersonStatusAdmin)
|
|
adminGroupV2.GET("/delivery-persons/:username/stats", handlers.GetDeliveryPersonStats)
|
|
adminGroupV2.GET("/delivery-persons/:username/history", handlers.GetDeliveryPersonHistory)
|
|
adminGroupV2.GET("/delivery-persons/:username/location", handlers.GetDeliveryPersonLocation) // ⭐ AJOUTÉ
|
|
adminGroupV2.PUT("/delivery-persons/update/:username/location", handlers.UpdateDeliveryPersonLocationAdmin)
|
|
adminGroupV2.DELETE("/delivery-persons/:username/queue/:command_id", handlers.RemoveCommandFromQueue)
|
|
adminGroupV2.GET("/delivery-persons/:username/map-links", handlers.GetDeliveryPersonMapLinks)
|
|
// Commandes annulées
|
|
adminGroupV2.GET("/orders/cancelled", handlers.GetAllCancelledOrders)
|
|
// ============================================
|
|
// ⭐⭐ PÉNALITÉS - GESTION ADMIN
|
|
// ============================================
|
|
adminGroupV2.POST("/penalty", handlers.ApplyClientPenalty) // Appliquer pénalité
|
|
adminGroupV2.GET("/client/:username/penalties", handlers.GetClientPenaltiesAdmin) // Voir pénalités client
|
|
adminGroupV2.POST("/client/:username/penalties/reset", handlers.ResetClientPenaltiesAdmin) // Reset amende
|
|
adminGroupV2.POST("/client/:username/point/reset", handlers.ResetClientPointAdmin) // Reset points → 0
|
|
adminGroupV2.POST("/client/:username/points/add", handlers.AddClientPointsAdmin) // Ajouter points par pool
|
|
adminGroupV2.POST("/client/:username/points/subtract", handlers.SubtractClientPointsAdmin) // Enlever points par pool
|
|
adminGroupV2.POST("/client/:username/rewards/reset", handlers.AdminResetClientRedeemed) // Reset récompenses réclamées
|
|
adminGroupV2.GET("/penalties/all", handlers.GetAllClientsWithPenalties) // Liste clients avec pénalités
|
|
adminGroupV2.GET("/penalties/stats", handlers.GetPenaltiesStats)
|
|
|
|
// ============================================
|
|
// ⚙️ PARAMÈTRES GLOBAUX
|
|
// ============================================
|
|
adminGroupV2.GET("/settings", handlers.GetSettings)
|
|
adminGroupV2.PUT("/settings", handlers.UpdateSettings)
|
|
|
|
// 🎁 PARRAINAGE ADMIN
|
|
adminGroupV2.GET("/client/:username/referral", handlers.GetClientReferralAdmin)
|
|
adminGroupV2.POST("/client/:username/referral/credit", handlers.CreditClientReferralAdmin)
|
|
adminGroupV2.DELETE("/client/:username/referral/reset", handlers.ResetClientReferralAdmin)
|
|
adminGroupV2.POST("/client/:username/parrain/set", handlers.SetClientParrainAdmin)
|
|
adminGroupV2.GET("/client/:username/parrain", handlers.GetClientParrainAdmin)
|
|
adminGroupV2.GET("/parrain/stats", handlers.GetParrainStatsAdmin)
|
|
|
|
// ============================================
|
|
// ⭐⭐ ALERTES POLICE - GESTION ADMIN
|
|
// ============================================
|
|
adminGroupV2.GET("/alerts/:id", handlers.GetAlert) // Détails d'une alerte
|
|
adminGroupV2.DELETE("/delete/alerts/:id", handlers.DeleteAlert) // Supprimer une alerte
|
|
adminGroupV2.GET("/alerts", handlers.GetActiveAlerts) // ⭐ AJOUTÉ - Toutes les alertes actives
|
|
adminGroupV2.GET("/all/alerts", handlers.GetAllAlerts)
|
|
|
|
}
|
|
|
|
// ============================================
|
|
// 👨💼 CABINE ROUTES (v1) - AVEC CABINE MIDDLEWARE
|
|
// ============================================
|
|
cabineGroupV1 := router.Group("/api/v1/cabine")
|
|
cabineGroupV1.Use(middleware.CabineMiddleware)
|
|
{
|
|
// ============================================
|
|
// ADDRESSES - GESTION
|
|
// ============================================
|
|
cabineGroupV1.POST("/add/address", handlers.AddAddress)
|
|
cabineGroupV1.DELETE("/delete/address", handlers.DeleteAddress)
|
|
cabineGroupV1.GET("/addresses", handlers.GetAllAddress)
|
|
// 🔔 NOTIFICATIONS CABINE
|
|
cabineGroupV1.GET("/notifications", handlers.GetLivreurNotifications)
|
|
cabineGroupV1.POST("/notifications/read", handlers.MarkLivreurNotificationsRead)
|
|
|
|
// 🤖 TELEGRAM CABINE
|
|
cabineGroupV1.POST("/telegram/link-token", handlers.GenerateAdminLinkToken)
|
|
cabineGroupV1.DELETE("/telegram/unlink", handlers.UnlinkAdminTelegram)
|
|
|
|
cabineGroupV1.GET("/commands", handlers.GetAllCommands)
|
|
cabineGroupV1.GET("/commands/:id/items", handlers.ShowItems)
|
|
cabineGroupV1.POST("/commands/:id/confirm-reception", handlers.StaffApproveDelivery)
|
|
cabineGroupV1.POST("/commands/:id/assign", handlers.AssignDeliveryPerson)
|
|
cabineGroupV1.POST("/commands/:id/notify-client", handlers.NotifyClientToDescend)
|
|
cabineGroupV1.PUT("/commands/:id/status", handlers.UpdateCommandStatusAdmin)
|
|
cabineGroupV1.PUT("/items/:item_id/status", handlers.UpdateItemStatus)
|
|
cabineGroupV1.GET("/commands/:id/deliveryman/location", handlers.GetDeliverymanLocationForCommand)
|
|
cabineGroupV1.GET("/all/deliveryman", handlers.GetAllDeliveryMen)
|
|
cabineGroupV1.GET("/delivery-persons/:username", handlers.GetDeliveryPersonDetails)
|
|
cabineGroupV1.GET("/all/clients", handlers.GetAllClients)
|
|
cabineGroupV1.DELETE("/commands/:id", handlers.DeleteCommandByCabine)
|
|
cabineGroupV1.POST("/commands/:id/propose-address", handlers.ProposeAddressChange)
|
|
cabineGroupV1.GET("/commands/cancelled", handlers.GetAllCancelledOrders)
|
|
cabineGroupV1.GET("/client/:username/penalties", handlers.GetClientPenaltiesAdmin) // Voir pénalités client
|
|
cabineGroupV1.POST("/client/:username/penalties/reset", handlers.ResetClientPenaltiesAdmin) // Reset pénalités
|
|
cabineGroupV1.POST("/client/:username/point/reset", handlers.ResetClientPointAdmin)
|
|
cabineGroupV1.GET("/penalties/all", handlers.GetAllClientsWithPenalties) // Liste clients avec pénalités
|
|
cabineGroupV1.GET("/penalties/stats", handlers.GetPenaltiesStats)
|
|
|
|
// ============================================
|
|
// ⭐⭐ ALERTES POLICE - CONSULTATION CABINE
|
|
// ============================================
|
|
cabineGroupV1.GET("/alerts/:id", handlers.GetAlert) // Détails d'une alerte
|
|
cabineGroupV1.GET("/alerts", handlers.GetActiveAlerts) // ⭐ AJOUTÉ - Toutes les alertes actives
|
|
cabineGroupV1.GET("/all/alerts", handlers.GetAllAlerts)
|
|
}
|
|
|
|
// ============================================
|
|
// 👨🚚 LIVREUR ROUTES (v1) - AVEC LIVREUR MIDDLEWARE
|
|
// ============================================
|
|
livreurGroupV1 := router.Group("/api/v1/livreur")
|
|
livreurGroupV1.Use(middleware.LivreurMiddleware)
|
|
{
|
|
// ============================================
|
|
// LIVRAISONS
|
|
// ============================================
|
|
livreurGroupV1.GET("/deliveries", handlers.GetMyDeliveries) // ✅ Données filtrées
|
|
livreurGroupV1.GET("/deliveries/:id", handlers.GetDeliveryDetails) // ✅ Détail filtré
|
|
livreurGroupV1.POST("/deliveries/:id/start", handlers.StartDelivery)
|
|
livreurGroupV1.PUT("/deliveries/:id/status", handlers.UpdateDeliveryStatus) // ✅ Avec GPS
|
|
livreurGroupV1.POST("/deliveries/:id/issue", handlers.ReportDeliveryIssue) // Motif non-livraison
|
|
livreurGroupV1.GET("/deliveries/:id/nav-link", handlers.GetLivreurNavLink) // Lien Waze App
|
|
|
|
// ============================================
|
|
// POSITION GPS
|
|
// ============================================
|
|
livreurGroupV1.POST("/location/update", handlers.UpdateLivreurLocation)
|
|
livreurGroupV1.GET("/location", handlers.GetMyLocation)
|
|
|
|
// ============================================
|
|
// STATUT LIVREUR
|
|
// ============================================
|
|
livreurGroupV1.POST("/update/status", handlers.UpdateDeliveryPersonStatus)
|
|
livreurGroupV1.GET("/status", handlers.GetMyStatus)
|
|
|
|
// ============================================
|
|
// QUEUE PERSONNELLE
|
|
// ============================================
|
|
livreurGroupV1.GET("/queue", handlers.GetMyQueue)
|
|
livreurGroupV1.GET("/stats", handlers.GetMyDeliveryStats)
|
|
|
|
// ============================================
|
|
// ALERTES POLICE
|
|
// ============================================
|
|
livreurGroupV1.POST("/alert", handlers.AlertPolice) // ⭐ AJOUTÉ - Créer une alerte
|
|
livreurGroupV1.DELETE("/alert/:id", handlers.EndAlert) // Mettre fin à une alerte
|
|
livreurGroupV1.GET("/alerts", handlers.GetMyAlerts) // Voir mes alertes
|
|
livreurGroupV1.GET("/alert/:id", handlers.GetAlert) // Détail d'une alerte
|
|
|
|
// ============================================
|
|
// NOTIFICATIONS LIVREUR
|
|
// ============================================
|
|
livreurGroupV1.GET("/notifications", handlers.GetLivreurNotifications)
|
|
livreurGroupV1.POST("/notifications/read", handlers.MarkLivreurNotificationsRead)
|
|
|
|
// 🤖 TELEGRAM LIVREUR
|
|
livreurGroupV1.POST("/telegram/link-token", handlers.GenerateLivreurLinkToken)
|
|
livreurGroupV1.GET("/telegram/status", handlers.GetLivreurTelegramStatus)
|
|
livreurGroupV1.DELETE("/telegram/unlink", handlers.UnlinkLivreurTelegram)
|
|
}
|
|
}
|