<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class StorageSyncServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap services.
     * Synchronise storage/app/public vers public/storage pour Windows (sans symlink)
     */
    public function boot(): void
    {
        // Synchroniser les images au boot uniquement en local/dev
        if (app()->environment('local', 'development')) {
            $this->syncStorage();
        }
    }

    /**
     * Copie les fichiers de storage/app/public vers public/storage
     */
    private function syncStorage(): void
    {
        $source = storage_path('app/public');
        $destination = public_path('storage');

        // Créer le dossier destination s'il n'existe pas
        if (!is_dir($destination)) {
            mkdir($destination, 0755, true);
        }

        // Synchroniser les sous-dossiers importants
        $folders = ['products', 'investment-products', 'categories', 'users', 'uploads'];
        
        foreach ($folders as $folder) {
            $srcFolder = $source . '/' . $folder;
            $dstFolder = $destination . '/' . $folder;
            
            if (is_dir($srcFolder)) {
                if (!is_dir($dstFolder)) {
                    mkdir($dstFolder, 0755, true);
                }
                
                $files = scandir($srcFolder);
                foreach ($files as $file) {
                    if ($file !== '.' && $file !== '..') {
                        $srcFile = $srcFolder . '/' . $file;
                        $dstFile = $dstFolder . '/' . $file;
                        
                        // Copier uniquement si le fichier n'existe pas ou est plus récent
                        if (!file_exists($dstFile) || filemtime($srcFile) > filemtime($dstFile)) {
                            copy($srcFile, $dstFile);
                        }
                    }
                }
            }
        }
    }
}
