<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AdminAuthController extends Controller
{
    /**
     * Affiche le formulaire de connexion admin.
     *
     * @return \Illuminate\View\View
     */
    public function showLoginForm(Request $request)
    {
        // Si déjà connecté, rediriger vers l'admin
        if (session('admin_authenticated')) {
            return redirect(url('/admin/deliveries'));
        }
        
        return view('admin.login');
    }
    
    /**
     * Obtient l'URL de base en préservant le sous-dossier
     */
    private function getBaseUrl(Request $request)
    {
        // Utiliser la configuration Laravel qui a été modifiée dans AppServiceProvider
        $appUrl = config('app.url');
        if ($appUrl && $appUrl !== 'http://localhost') {
            return rtrim($appUrl, '/');
        }
        
        // Fallback : construire depuis les variables serveur
        $scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
        $host = $_SERVER['HTTP_HOST'] ?? $request->getHost();
        
        if (isset($_SERVER['APP_SUBDIRECTORY'])) {
            return $scheme . '://' . $host . $_SERVER['APP_SUBDIRECTORY'];
        }
        
        // Dernier recours
        return $scheme . '://' . $host;
    }

    /**
     * Traite la connexion admin.
     *
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function login(Request $request)
    {
        $request->validate([
            'password' => 'required|string',
        ]);

        $adminPassword = env('ADMIN_PASSWORD', 'admin123');
        
        // Vérifier le mot de passe
        if ($request->password === $adminPassword) {
            session(['admin_authenticated' => true]);
            // Utiliser url() helper qui prend maintenant en compte le sous-dossier grâce à AppServiceProvider
            return redirect(url('/admin/deliveries'))
                ->with('success', 'Connexion réussie !');
        }

        return back()
            ->withInput()
            ->with('error', 'Mot de passe incorrect.');
    }

    /**
     * Déconnexion admin.
     *
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     */
    public function logout(Request $request)
    {
        $request->session()->forget('admin_authenticated');
        
        return redirect(url('/admin/login'))
            ->with('success', 'Déconnexion réussie.');
    }
}
