package routes import ( "api-ticketing-app/database" "api-ticketing-app/models" "net/http" "github.com/gin-gonic/gin" ) func UserRoutes(router *gin.Engine) { r := router.Group("/users") { r.POST("/", CreateUser) r.GET("/", GetUsers) r.GET("/:id", GetUser) r.PUT("/:id", UpdateUser) r.DELETE("/:id", DeleteUser) } } func CreateUser(c *gin.Context) { var user models.User if err := c.ShouldBindJSON(&user); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } database.DB.Create(&user) c.JSON(http.StatusCreated, user) } func GetUsers(c *gin.Context) { var users []models.User database.DB.Find(&users) c.JSON(http.StatusOK, users) } func GetUser(c *gin.Context) { id := c.Param("id") var user models.User if err := database.DB.First(&user, id).Error; err != nil { c.JSON(http.StatusNotFound, gin.H{"error": "Utilisateur non trouvé"}) return } c.JSON(http.StatusOK, user) } func UpdateUser(c *gin.Context) { id := c.Param("id") var user models.User if err := database.DB.First(&user, id).Error; err != nil { c.JSON(http.StatusNotFound, gin.H{"error": "Utilisateur non trouvé"}) return } var input models.User if err := c.ShouldBindJSON(&input); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } user.Name = input.Name user.Email = input.Email database.DB.Save(&user) c.JSON(http.StatusOK, user) } func DeleteUser(c *gin.Context) { id := c.Param("id") var user models.User if err := database.DB.First(&user, id).Error; err != nil { c.JSON(http.StatusNotFound, gin.H{"error": "Utilisateur non trouvé"}) return } database.DB.Delete(&user) c.JSON(http.StatusOK, gin.H{"message": "Utilisateur supprimé"}) }