import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import '../../../../core/services/auth_service.dart';
import '../../../../core/theme/app_theme_extension.dart';
import '../../../../core/routing/app_router.dart';
import '../widgets/teacher_hero_widget.dart';
import '../widgets/teacher_quick_actions_widget.dart';
import '../widgets/teacher_classes_list_widget.dart';

class TeacherDashboardPage extends StatefulWidget {
  const TeacherDashboardPage({super.key});

  @override
  State<TeacherDashboardPage> createState() => _TeacherDashboardPageState();
}

class _TeacherDashboardPageState extends State<TeacherDashboardPage> {
  String _userName = 'Professor';

  @override
  void initState() {
    super.initState();
    _checkRoleAndLoadData();
  }

  Future<void> _checkRoleAndLoadData() async {
    final user = AuthService.currentUser;
    if (user == null) {
      if (mounted) context.go('/role-selection');
      return;
    }
    final role = await AuthService.getUserRole(user.uid);
    if (role != 'teacher') {
      if (mounted) {
        context.go('/role-selection');
      }
      return;
    }
    await _loadUserData();
  }

  Future<void> _loadUserData() async {
    try {
      final user = AuthService.currentUser;
      if (user != null) {
        print('DEBUG: Loading teacher data for dashboard');
        print('DEBUG: User email: ${user.email}');
        print('DEBUG: User displayName before reload: ${user.displayName}');

        await user.reload();

        final updatedUser = AuthService.currentUser;
        if (updatedUser != null) {
          print(
            'DEBUG: User displayName after reload: ${updatedUser.displayName}',
          );

          String displayName = updatedUser.displayName ?? '';
          print('DEBUG: Initial displayName value: "$displayName"');

          if (displayName.isEmpty && updatedUser.email != null) {
            displayName = updatedUser.email!.split('@')[0];
            print('DEBUG: Extracted name from email: "$displayName"');
          }
          if (displayName.isEmpty) {
            displayName = 'Professor';
            print('DEBUG: Using fallback "Professor"');
          }

          print('DEBUG: Final displayName to use: "$displayName"');
          setState(() {
            _userName = displayName;
          });
        }
      }
    } catch (e) {
      print('DEBUG: Error loading user data: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    final themeExtras = AppThemeExtras.of(context);
    final headerColor = themeExtras.dashboardHeaderTextColor;

    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          gradient: LinearGradient(
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter,
            colors: themeExtras.dashboardBackgroundGradient,
            stops: themeExtras.dashboardGradientStops,
          ),
        ),
        child: SafeArea(
          top: false,
          child: SingleChildScrollView(
            child: Padding(
              padding: const EdgeInsets.only(
                left: 24.0,
                right: 24.0,
                bottom: 28.0,
                top: 52.0,
              ),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  // Header with logout and settings
                  Row(
                    crossAxisAlignment: CrossAxisAlignment.center,
                    children: [
                      Expanded(
                        child: Column(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Text(
                              'Bem-vindo, $_userName!',
                              style: TextStyle(
                                color: headerColor,
                                fontSize: 28,
                                fontWeight: FontWeight.bold,
                              ),
                            ),
                            const SizedBox(height: 4),
                            Text(
                              'Painel de Gestão de Conteúdo',
                              style: TextStyle(
                                color: headerColor,
                                fontSize: 16,
                                fontWeight: FontWeight.w300,
                              ),
                            ),
                          ],
                        ),
                      ),
                      IconButton(
                        icon: Icon(Icons.settings, color: headerColor),
                        onPressed: () {
                          AppRouter.goToSettings(context);
                        },
                        tooltip: 'Configurações',
                      ),
                      IconButton(
                        icon: Icon(Icons.logout, color: headerColor),
                        onPressed: () async {
                          await AuthService.signOut();
                          if (mounted) {
                            context.go('/login');
                          }
                        },
                        tooltip: 'Sair',
                      ),
                    ],
                  ),
                  const SizedBox(height: 32),

                  // Hero Section - Class Overview
                  TeacherHeroWidget(userName: _userName),

                  const SizedBox(height: 24),

                  // Quick Actions Section
                  const TeacherQuickActionsWidget(),

                  const SizedBox(height: 24),

                  // Classes List Section
                  const TeacherClassesListWidget(),

                  const SizedBox(height: 40),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}
