#!/usr/bin/env python3
"""
Script pour ajouter des produits supplémentaires à la base de données.
Ces produits sont des moteurs reconditionnés et des pièces détachées additionnelles.
"""
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 (moteurs et pièces détachées)
new_products = [
    {
        "name": "Stock complet de pièces détachées",
        "description": "Large inventaire de pièces détachées pour moteurs poids lourds. Pièces mécaniques variées adaptées à différents modèles de camions et véhicules industriels.",
        "price": None,  # Prix sur demande
        "image_url": "uploads/products/stock-pieces-detachees.jpg",
        "category_name": "Pièces détachées",
        "condition": "used"
    },
    {
        "name": "Collection organisée de pièces détachées",
        "description": "Étagères complètes de pièces détachées classées et organisées pour faciliter la recherche. Disponibles pour divers types de moteurs industriels.",
        "price": None,  # Prix sur demande
        "image_url": "uploads/products/etagere-pieces-detachees.jpg",
        "category_name": "Pièces détachées",
        "condition": "used"
    },
    {
        "name": "Démarreur haute performance",
        "description": "Démarreur robuste pour moteurs industriels et poids lourds. Reconnu pour sa fiabilité et sa capacité à démarrer dans des conditions difficiles.",
        "price": 95000,
        "image_url": "uploads/products/demarreur-moteur.jpg",
        "category_name": "Pièces détachées",
        "condition": "reconditioned"
    },
    {
        "name": "Ventilateur de refroidissement industriel",
        "description": "Ventilateur avec embrayage visqueux pour systèmes de refroidissement de moteurs poids lourds. Assure une température optimale du moteur même en conditions extrêmes.",
        "price": 68000,
        "image_url": "uploads/products/ventilateur-moteur.jpg",
        "category_name": "Pièces détachées",
        "condition": "new"
    },
    {
        "name": "Moteur complet d'occasion",
        "description": "Moteur diesel d'occasion en bon état, provenant d'un camion ayant peu servi. Convient pour remplacement ou rénovation de moteur existant.",
        "price": 1850000,
        "image_url": "uploads/products/moteur-complet-occasion.jpg",
        "category_name": "Moteurs reconditionnés",
        "condition": "used"
    },
    {
        "name": "Moteur industriel d'occasion",
        "description": "Moteur industriel d'occasion fonctionnel avec embrayage. Parfait pour les projets de rénovation ou comme remplacement économique.",
        "price": 1650000,
        "image_url": "uploads/products/moteur-industriel-occasion.jpg",
        "category_name": "Moteurs reconditionnés",
        "condition": "used"
    },
    {
        "name": "Module ABS pour poids lourds",
        "description": "Module de contrôle ABS pour systèmes de freinage de camions. Composant essentiel pour la sécurité et le contrôle des véhicules industriels.",
        "price": 115000,
        "image_url": "uploads/products/module-abs.jpg",
        "category_name": "Pièces détachées",
        "condition": "reconditioned"
    },
    {
        "name": "Calculateur électronique de moteur",
        "description": "Calculateur électronique pour la gestion du moteur. Module de contrôle reconditionné pour l'optimisation des performances du moteur.",
        "price": 165000,
        "image_url": "uploads/products/calculateur-moteur.jpg",
        "category_name": "Pièces détachées",
        "condition": "reconditioned"
    },
    {
        "name": "Compresseur d'air pour système pneumatique",
        "description": "Compresseur d'air pour les systèmes pneumatiques des camions et véhicules industriels. Garantit un fonctionnement optimal des freins et autres équipements pneumatiques.",
        "price": 110000,
        "image_url": "uploads/products/compresseur-air.jpg",
        "category_name": "Pièces détachées",
        "condition": "reconditioned"
    }
]

def add_products():
    """Ajoute de nouveaux produits à la base de données"""
    with app.app_context():
        # Trouver les catégories nécessaires
        pieces_detachees = Category.query.filter_by(name="Pièces détachées").first()
        moteurs_reconditionnes = Category.query.filter_by(name="Moteurs reconditionnés").first()
        
        if not pieces_detachees:
            print("Erreur: Catégorie 'Pièces détachées' introuvable!")
            return
            
        if not moteurs_reconditionnes:
            print("Erreur: Catégorie 'Moteurs reconditionnés' introuvable!")
            return
            
        print(f"Catégories trouvées: 'Pièces détachées' (ID: {pieces_detachees.id}), 'Moteurs reconditionnés' (ID: {moteurs_reconditionnes.id})")
        
        # Comptage des produits existants par catégorie
        pieces_count = Product.query.filter_by(category_id=pieces_detachees.id).count()
        moteurs_count = Product.query.filter_by(category_id=moteurs_reconditionnes.id).count()
        
        print(f"Produits existants: {pieces_count} pièces détachées, {moteurs_count} moteurs reconditionnés")
        
        # Ajouter les produits
        pieces_added = 0
        moteurs_added = 0
        
        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
                
            # Déterminer la catégorie
            if product_data["category_name"] == "Pièces détachées":
                category_id = pieces_detachees.id
                pieces_added += 1
            else:
                category_id = moteurs_reconditionnes.id
                moteurs_added += 1
                
            # 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} ({product_data['category_name']})")
        
        # Sauvegarder les changements
        db.session.commit()
        
        # Afficher le récapitulatif
        new_pieces_count = Product.query.filter_by(category_id=pieces_detachees.id).count()
        new_moteurs_count = Product.query.filter_by(category_id=moteurs_reconditionnes.id).count()
        
        print(f"Nombre de produits après ajout: {new_pieces_count} pièces détachées, {new_moteurs_count} moteurs reconditionnés")
        print(f"Produits ajoutés: {pieces_added} pièces détachées, {moteurs_added} moteurs reconditionnés")

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