<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;

class AuthenticatedSessionController extends Controller
{
    public function create(): View
    {
        return view('auth.login');
    }

    public function store(LoginRequest $request): RedirectResponse
    {
        try {
            $request->authenticate();
            $request->session()->regenerate();

            $user = auth()->user();

            // Debug: Check if user is authenticated
            if (!$user) {
                return redirect()->route('login')->withErrors(['login' => 'Authentication failed']);
            }

            // Role-based redirect
            if ($user->isSuperAdmin()) {
                return redirect()->route('superadmin.dashboard');
            } elseif ($user->isSchoolAdmin()) {
                return redirect()->route('schooladmin.dashboard');
            } elseif ($user->isTeacher()) {
                return redirect()->route('teacher.dashboard');
            } elseif ($user->isParent()) {
                return redirect()->route('parent.dashboard');
            } elseif ($user->isStudent()) {
                return redirect()->route('student.dashboard');
            }

            // Fallback redirect
            return redirect()->intended(route('dashboard'));
            
        } catch (\Exception $e) {
            return back()->withErrors(['login' => 'Login failed: ' . $e->getMessage()]);
        }
    }

    public function destroy(Request $request): RedirectResponse
    {
        Auth::guard('web')->logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
        return redirect('/');
    }
}