This commit is contained in:
2026-05-15 16:45:56 +02:00
parent 921c861311
commit 04671637d2
8 changed files with 70 additions and 25 deletions
+44 -7
View File
@@ -456,7 +456,7 @@ func GetAllProducts(c *gin.Context) {
})
return
}
products = filterActivePrices(products)
c.JSON(http.StatusOK, gin.H{
"success": true,
"data": products,
@@ -493,17 +493,16 @@ func GetProductsByCategory(c *gin.Context) {
media, _ := database.GetMediaByProductID(products[i].ID)
products[i].Media = media
}
filteredProducts := filterActivePrices(products)
c.JSON(http.StatusOK, gin.H{
"success": true,
"data": products,
"count": len(products),
"data": filteredProducts,
"count": len(filteredProducts),
})
}
func GetProductByID(c *gin.Context) {
database := c.MustGet("database").(*db.Database)
id, err := strconv.Atoi(c.Param("id"))
if err != nil || id <= 0 {
c.JSON(http.StatusBadRequest, gin.H{
@@ -512,7 +511,6 @@ func GetProductByID(c *gin.Context) {
})
return
}
product, err := database.GetProductByID(id)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{
@@ -521,11 +519,13 @@ func GetProductByID(c *gin.Context) {
})
return
}
// ✅ Charger les médias
media, _ := database.GetMediaByProductID(product.ID)
product.Media = media
// ✅ Filtrer les prix désactivés
filterActivepricesSingle(&product)
c.JSON(http.StatusOK, gin.H{
"success": true,
"data": product,
@@ -563,6 +563,7 @@ func UpdateProduct(c *gin.Context) {
Description string `json:"description"`
Unit string `json:"unit"`
Prices []models.ProductPrice `json:"prices"`
Stock *float64 `json:"stock"`
}
if err := c.ShouldBindJSON(&updateData); err != nil {
@@ -607,6 +608,13 @@ func UpdateProduct(c *gin.Context) {
}
}
if updateData.Stock != nil {
if err := validateStock(*updateData.Stock); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
}
log.Printf("🔄 [UpdateProduct] %s met à jour produit #%d", username, id)
if err := database.UpdateProduct(id, updateData.Name, updateData.Category, updateData.Description, updateData.Unit, updateData.Prices); err != nil {
@@ -615,6 +623,12 @@ func UpdateProduct(c *gin.Context) {
return
}
if updateData.Stock != nil {
if err := database.SetProductStock(id, *updateData.Stock); err != nil {
log.Printf("⚠️ [UpdateProduct] Erreur mise à jour stock: %v", err)
}
}
// ✅ RÉCUPÉRER LE PRODUIT MIS À JOUR
updatedProduct, _ := database.GetProductByID(id)
media, _ := database.GetMediaByProductID(id)
@@ -1013,3 +1027,26 @@ func cleanFileName(name string) string {
return result
}
func filterActivePrices(products []models.Product) []models.Product {
for i := range products {
activePrices := []models.ProductPrice{}
for _, p := range products[i].Prices {
if p.ActivePrice {
activePrices = append(activePrices, p)
}
}
products[i].Prices = activePrices
}
return products
}
func filterActivepricesSingle(product *models.Product) {
activePrices := []models.ProductPrice{}
for _, p := range product.Prices {
if p.ActivePrice {
activePrices = append(activePrices, p)
}
}
product.Prices = activePrices
}