"""
Script pour ajouter des services à la base de données.
Ces services sont des prestations offertes par GMPL.
"""
import os
import sys
from datetime import datetime

from app import create_app, db
from models import Service

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

# Liste des services à ajouter
SERVICES = [
    {
        "name": "Révision et maintenance de moteurs industriels",
        "description": (
            "Notre service de révision et maintenance de moteurs industriels garantit la performance et "
            "la fiabilité de vos équipements. Nos techniciens qualifiés effectuent un diagnostic complet, "
            "remplacent les pièces usées et optimisent le fonctionnement de votre moteur pour prolonger "
            "sa durée de vie et réduire les risques de panne."
        ),
        "image_url": "uploads/services/service-revision-moteur.jpg",
        "is_active": True
    },
    {
        "name": "Reconditionnement de moteurs poids lourds",
        "description": (
            "Donnez une seconde vie à vos moteurs avec notre service de reconditionnement. "
            "Nous démontons entièrement le moteur, remplaçons les composants défectueux, "
            "réajustons les tolérances et testons rigoureusement l'ensemble avant restitution. "
            "Un moteur reconditionné par GMPL offre des performances proches du neuf à un coût maîtrisé."
        ),
        "image_url": "uploads/services/service-reconditionnement.jpg",
        "is_active": True
    },
    {
        "name": "Installation et remplacement de moteurs",
        "description": (
            "Notre équipe spécialisée assure l'installation et le remplacement de moteurs industriels "
            "pour tous types de véhicules et d'équipements lourds. Nous garantissons une intervention "
            "rapide et efficace, minimisant ainsi les temps d'arrêt de votre flotte. Chaque installation "
            "est suivie d'une période de test pour vérifier la performance optimale."
        ),
        "image_url": "uploads/services/service-installation-moteur.jpg",
        "is_active": True
    },
    {
        "name": "Diagnostic et réparation de pièces détachées",
        "description": (
            "Grâce à notre expertise et nos équipements de pointe, nous proposons un service complet "
            "de diagnostic et de réparation de pièces détachées pour moteurs industriels. Nous identifions "
            "avec précision l'origine des dysfonctionnements et procédons aux réparations nécessaires, "
            "vous évitant ainsi des remplacements coûteux lorsque c'est possible."
        ),
        "image_url": "uploads/services/service-diagnostic-reparation.jpg",
        "is_active": True
    },
    {
        "name": "Conseil technique et formations",
        "description": (
            "GMPL met son expertise à votre service à travers des prestations de conseil technique "
            "et de formation. Nos ingénieurs vous accompagnent dans le choix des moteurs et pièces "
            "les plus adaptés à vos besoins, et forment vos équipes à leur utilisation et leur "
            "maintenance de base pour une gestion optimale de votre parc."
        ),
        "image_url": "uploads/services/service-conseil-formation.jpg",
        "is_active": True
    }
]

def create_services_folder():
    """Crée le dossier pour les images de services s'il n'existe pas"""
    services_folder = os.path.join('static', 'uploads', 'services')
    if not os.path.exists(services_folder):
        os.makedirs(services_folder)
        print(f"Dossier créé: {services_folder}")
        
    # Crée aussi le dossier uploads s'il n'existe pas
    uploads_folder = os.path.join('static', 'uploads')
    if not os.path.exists(uploads_folder):
        os.makedirs(uploads_folder)
        print(f"Dossier créé: {uploads_folder}")

def add_services():
    """Ajoute les services définis ci-dessus à la base de données"""
    print("Ajout des services à la base de données...")
    
    # Vérifie si des services existent déjà
    existing_count = Service.query.count()
    if existing_count > 0:
        print(f"{existing_count} services existent déjà dans la base de données.")
        # En mode automatique (environnement Replit), on continue sans demander
        if sys.stdout.isatty():
            # Si nous sommes dans un terminal interactif, demandons confirmation
            choice = input("Voulez-vous quand même ajouter les nouveaux services? (o/n): ")
            if choice.lower() != 'o':
                print("Opération annulée.")
                return
        else:
            print("Mode automatique: ajout des services sans confirmation.")
    
    for service_data in SERVICES:
        # Vérifie si le service existe déjà (par son nom)
        existing_service = Service.query.filter_by(name=service_data["name"]).first()
        if existing_service:
            print(f"Le service '{service_data['name']}' existe déjà. Ignoré.")
            continue
        
        # Crée le nouveau service
        service = Service(
            name=service_data["name"],
            description=service_data["description"],
            image_url=service_data["image_url"],
            is_active=service_data["is_active"],
            created_at=datetime.utcnow(),
            updated_at=datetime.utcnow()
        )
        
        db.session.add(service)
        print(f"Service ajouté: {service_data['name']}")
    
    # Sauvegarde en base de données
    db.session.commit()
    print("Tous les services ont été ajoutés avec succès.")

if __name__ == "__main__":
    # Exécute dans le contexte de l'application Flask
    with app.app_context():
        create_services_folder()
        add_services()