#!/usr/bin/env python3
"""
Script pour ajouter de nouveaux produits à la base de données.
Ces produits sont des pièces détachées avec les images fournies.
"""
import os
from app import create_app
from models import db, Product, Category

# Créer l'application Flask
app = create_app()

# Liste des nouveaux produits à ajouter
new_products = [
    {
        "name": "Siège moteur pour camions",
        "description": "Siège moteur robuste pour poids lourds, conçu pour réduire les vibrations et offrir une stabilité optimale au moteur. Compatible avec plusieurs modèles de camions.",
        "price": 75000,
        "image_url": "uploads/products/siege-moteur.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Alternateur pour moteur industriel",
        "description": "Alternateur haute performance pour moteurs industriels et poids lourds. Garantit une génération électrique fiable même dans les conditions les plus difficiles.",
        "price": 125000,
        "image_url": "uploads/products/alternateur.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Kit valves et injecteurs",
        "description": "Ensemble complet de valves et injecteurs pour systèmes d'injection de moteurs poids lourds. Pièces de haute précision pour un rendement optimal du moteur.",
        "price": 185000,
        "image_url": "uploads/products/valves-et-injecteurs.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Distributeur hydraulique",
        "description": "Distributeur hydraulique multifonction avec filtre Renault. Composant essentiel du système hydraulique des camions et engins industriels.",
        "price": 95000,
        "image_url": "uploads/products/distributeur-hydraulique.jpg", 
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Filtre à air WABCO",
        "description": "Système de protection WABCO pour circuit d'air. Filtre haute efficacité pour garantir la pureté de l'air dans le système pneumatique des poids lourds.",
        "price": 45000,
        "image_url": "uploads/products/filtre-air-wabco.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Pompe hydraulique à engrenages",
        "description": "Pompe hydraulique à engrenages pour transmission de puissance. Composant robuste et durable adapté aux applications industrielles exigeantes.",
        "price": 135000,
        "image_url": "uploads/products/pompe-hydraulique.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Pompe à eau pour moteur poids lourd",
        "description": "Pompe à eau haute performance pour la circulation du liquide de refroidissement dans les moteurs de poids lourds. Garantit un refroidissement optimal du moteur.",
        "price": 85000,
        "image_url": "uploads/products/pompe-a-eau.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Butées d'embrayage",
        "description": "Set de butées d'embrayage de qualité supérieure pour véhicules industriels. Assure un fonctionnement optimal du système d'embrayage.",
        "price": 28000,
        "image_url": "uploads/products/butees-embrayage.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Régulateur d'injection diesel",
        "description": "Régulateur électronique d'injection pour moteurs diesel. Permet un contrôle précis de l'injection de carburant pour des performances optimales.",
        "price": 155000,
        "image_url": "uploads/products/regulateur-injection.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Boîtiers électroniques de contrôle",
        "description": "Boîtiers électroniques pour la gestion des systèmes du véhicule. Modules de contrôle reconditionnés pour diverses fonctions des poids lourds.",
        "price": 175000,
        "image_url": "uploads/products/boitiers-electroniques.jpg",
        "category_name": "Pièces détachées",
        "condition": "reconditioned"
    },
    {
        "name": "Turbocompresseurs industriels",
        "description": "Turbocompresseurs pour améliorer les performances des moteurs industriels. Disponibles en différentes tailles pour divers types de moteurs.",
        "price": 195000,
        "image_url": "uploads/products/turbocompresseurs.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Pompes hydrauliques industrielles",
        "description": "Pompes hydrauliques pour applications industrielles lourdes. Composants essentiels pour les systèmes hydrauliques des engins de chantier et poids lourds.",
        "price": 145000,
        "image_url": "uploads/products/pompes-hydrauliques.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    }
]

def add_products():
    """Ajoute de nouveaux produits à la base de données"""
    with app.app_context():
        # Trouver la catégorie "Pièces détachées"
        category = Category.query.filter_by(name="Pièces détachées").first()
        
        if not category:
            print("Erreur: Catégorie 'Pièces détachées' introuvable!")
            return
            
        print(f"Catégorie trouvée: {category.name} (ID: {category.id})")
        
        # Compter les produits existants dans cette catégorie
        existing_count = Product.query.filter_by(category_id=category.id).count()
        print(f"Nombre de produits existants dans cette catégorie: {existing_count}")
        
        # Ajouter les produits
        for product_data in new_products:
            # Vérifier si le produit existe déjà (par son nom)
            existing_product = Product.query.filter_by(name=product_data["name"]).first()
            
            if existing_product:
                print(f"Le produit '{product_data['name']}' existe déjà. Ignoré.")
                continue
                
            # Créer un nouveau produit
            product = Product(
                name=product_data["name"],
                description=product_data["description"],
                price=product_data["price"],
                image_url=product_data["image_url"],
                category_id=category.id,
                is_available=True,
                condition=product_data["condition"]
            )
            
            # Ajouter à la base de données
            db.session.add(product)
            print(f"Ajout du produit: {product.name}")
        
        # Sauvegarder les changements
        db.session.commit()
        
        # Afficher le nombre de produits dans la catégorie après ajout
        new_count = Product.query.filter_by(category_id=category.id).count()
        print(f"Nombre de produits dans la catégorie après ajout: {new_count}")
        print(f"Nombre de produits ajoutés: {new_count - existing_count}")

if __name__ == "__main__":
    add_products()
    print("Terminé!")