# Script de déploiement du hosting Firebase
# Ce script construit l'application et la déploie sur Firebase Hosting

Write-Host "=== Déploiement Firebase Hosting ===" -ForegroundColor Cyan
Write-Host ""

# 1. Vérifier que nous sommes dans le bon dossier
if (!(Test-Path "pubspec.yaml")) {
    Write-Host "ERREUR: Ce script doit être exécuté depuis la racine du projet Flutter" -ForegroundColor Red
    exit 1
}

# 2. Construire l'application Flutter pour le web
Write-Host "Étape 1/3: Construction de l'application Flutter pour le web..." -ForegroundColor Yellow
flutter build web

if ($LASTEXITCODE -ne 0) {
    Write-Host "ERREUR: La construction de l'application a échoué" -ForegroundColor Red
    exit 1
}

Write-Host "✓ Application construite avec succès" -ForegroundColor Green
Write-Host ""

# 3. Vérifier que version.json existe
if (!(Test-Path "build/web/version.json")) {
    Write-Host "AVERTISSEMENT: version.json n'a pas été copié dans build/web/" -ForegroundColor Yellow

    # Copier manuellement si nécessaire
    if (Test-Path "web/version.json") {
        Write-Host "  → Copie de web/version.json vers build/web/..." -ForegroundColor Yellow
        Copy-Item "web/version.json" "build/web/version.json"
        Write-Host "✓ Fichier copié" -ForegroundColor Green
    } else {
        Write-Host "ERREUR: web/version.json n'existe pas" -ForegroundColor Red
        exit 1
    }
}

Write-Host ""

# 4. Afficher la version qui va être déployée
$versionContent = Get-Content "build/web/version.json" | ConvertFrom-Json
Write-Host "Version à déployer: $($versionContent.version)" -ForegroundColor Cyan
Write-Host "Force update: $($versionContent.forceUpdate)" -ForegroundColor Cyan
Write-Host ""

# 5. Demander confirmation
$confirm = Read-Host "Voulez-vous déployer sur Firebase Hosting ? (o/n)"
if ($confirm -ne "o" -and $confirm -ne "O") {
    Write-Host "Déploiement annulé" -ForegroundColor Yellow
    exit 0
}

Write-Host ""

# 6. Déployer sur Firebase Hosting
Write-Host "Étape 2/3: Déploiement sur Firebase Hosting..." -ForegroundColor Yellow
firebase deploy --only hosting

if ($LASTEXITCODE -ne 0) {
    Write-Host "ERREUR: Le déploiement a échoué" -ForegroundColor Red
    exit 1
}

Write-Host "✓ Déploiement réussi" -ForegroundColor Green
Write-Host ""

# 7. Vérifier que version.json est accessible
Write-Host "Étape 3/3: Vérification de l'accès à version.json..." -ForegroundColor Yellow

try {
    $response = Invoke-WebRequest -Uri "https://app.em2events.fr/version.json" -Method GET -UseBasicParsing

    if ($response.StatusCode -eq 200) {
        Write-Host "✓ version.json est accessible" -ForegroundColor Green

        # Vérifier les en-têtes CORS
        if ($response.Headers["Access-Control-Allow-Origin"]) {
            Write-Host "✓ En-têtes CORS configurés correctement" -ForegroundColor Green
        } else {
            Write-Host "⚠ ATTENTION: En-têtes CORS non détectés" -ForegroundColor Yellow
            Write-Host "  Les en-têtes peuvent prendre quelques minutes pour se propager" -ForegroundColor Yellow
        }

        # Afficher la version déployée
        $deployedVersion = ($response.Content | ConvertFrom-Json).version
        Write-Host "Version déployée: $deployedVersion" -ForegroundColor Cyan

    } else {
        Write-Host "⚠ Code de statut: $($response.StatusCode)" -ForegroundColor Yellow
    }
} catch {
    Write-Host "⚠ Impossible de vérifier l'accès à version.json" -ForegroundColor Yellow
    Write-Host "  Erreur: $($_.Exception.Message)" -ForegroundColor Yellow
    Write-Host "  Le fichier peut prendre quelques minutes pour être accessible" -ForegroundColor Yellow
}

Write-Host ""
Write-Host "=== Déploiement terminé ===" -ForegroundColor Cyan
Write-Host ""
Write-Host "Les utilisateurs recevront une notification de mise à jour au prochain chargement de l'application." -ForegroundColor Green
Write-Host "URL de l'application: https://app.em2events.fr" -ForegroundColor Cyan
