import 'package:flutter/material.dart';
import '../../../core/constants/colors.dart';

class ProfileScreen extends StatelessWidget {
  const ProfileScreen({super.key});

  @override
  Widget build(BuildContext context) {
    print("Affichage de l'écran de profil.");

    return Scaffold(
      backgroundColor: AppColors.backgroundColor,
      body: CustomScrollView(
        slivers: [
          SliverAppBar(
            expandedHeight: 200.0,
            floating: false,
            pinned: true,
            backgroundColor: AppColors.darkPrimary,
            flexibleSpace: FlexibleSpaceBar(
              title: Text(
                'Profil',
                style: TextStyle(
                  color: AppColors.accentColor,
                  fontSize: 20.0,
                  fontWeight: FontWeight.bold,
                ),
              ),
              background: Image.asset(
                'lib/assets/images/profile_picture.png',
                fit: BoxFit.cover,
              ),
            ),
            actions: [
              IconButton(
                icon: const Icon(Icons.settings, color: Colors.white),
                onPressed: () {
                  print("Bouton des paramètres cliqué.");
                  // Logique de navigation vers les paramètres
                },
              ),
            ],
          ),
          SliverList(
            delegate: SliverChildListDelegate(
              [
                const SizedBox(height: 10),
                _buildUserInfoCard(),
                const SizedBox(height: 10),
                _buildEditOptionsCard(),
                const SizedBox(height: 10),
                _buildStatisticsSectionCard(),
                const SizedBox(height: 10),
                _buildExpandableSectionCard(
                  title: 'Historique',
                  icon: Icons.history,
                  children: [
                    _buildAnimatedListTile(
                      icon: Icons.event_note,
                      label: 'Historique des Événements',
                      onTap: () {
                        print("Accès à l'historique des événements.");
                        // Logique de navigation vers l'historique des événements
                      },
                    ),
                    _buildAnimatedListTile(
                      icon: Icons.history,
                      label: 'Historique des Publications',
                      onTap: () {
                        print("Accès à l'historique des publications.");
                        // Logique de navigation vers l'historique des publications
                      },
                    ),
                    _buildAnimatedListTile(
                      icon: Icons.bookmark,
                      label: 'Historique de Réservations',
                      onTap: () {
                        print("Accès à l'historique des réservations.");
                        // Logique de navigation vers l'historique des réservations
                      },
                    ),
                  ],
                ),
                const SizedBox(height: 10),
                _buildExpandableSectionCard(
                  title: 'Préférences et Paramètres',
                  icon: Icons.settings,
                  children: [
                    _buildAnimatedListTile(
                      icon: Icons.privacy_tip,
                      label: 'Paramètres de confidentialité',
                      onTap: () {
                        print("Accès aux paramètres de confidentialité.");
                        // Logique de navigation vers les paramètres de confidentialité
                      },
                    ),
                    _buildAnimatedListTile(
                      icon: Icons.notifications,
                      label: 'Notifications',
                      onTap: () {
                        print("Accès aux paramètres de notifications.");
                        // Logique de navigation vers les notifications
                      },
                    ),
                    _buildAnimatedListTile(
                      icon: Icons.language,
                      label: 'Langue de l\'application',
                      onTap: () {
                        print("Accès aux paramètres de langue.");
                        // Logique de navigation vers les paramètres de langue
                      },
                    ),
                    _buildAnimatedListTile(
                      icon: Icons.format_paint,
                      label: 'Thème de l\'application',
                      onTap: () {
                        print("Accès aux paramètres de thème.");
                        // Logique de navigation vers les paramètres de thème
                      },
                    ),
                  ],
                ),
                const SizedBox(height: 10),
                _buildSupportSectionCard(),
                const SizedBox(height: 10),
                _buildAccountDeletionCard(context),
              ],
            ),
          ),
        ],
      ),
    );
  }

  Widget _buildUserInfoCard() {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            CircleAvatar(
              radius: 50,
              backgroundImage: AssetImage('lib/assets/images/profile_picture.png'),
              backgroundColor: Colors.transparent,
            ),
            const SizedBox(height: 10),
            const Text(
              'GBANE Dahoud',
              style: TextStyle(
                fontSize: 24,
                fontWeight: FontWeight.bold,
                color: Colors.white,
                letterSpacing: 1.2,
              ),
            ),
            const SizedBox(height: 5),
            Text(
              'pseudo',
              style: TextStyle(
                fontSize: 16,
                color: Colors.grey[400],
                fontStyle: FontStyle.italic,
              ),
            ),
            const SizedBox(height: 5),
            Text(
              'gbanedahoud@lions.dev',
              style: TextStyle(
                fontSize: 14,
                color: Colors.grey[600],
                decoration: TextDecoration.underline,
              ),
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildEditOptionsCard() {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: Column(
        children: [
          _buildAnimatedListTile(
            icon: Icons.edit,
            label: 'Éditer le profil',
            onTap: () {
              print("Édition du profil.");
              // Logique de navigation vers l'édition du profil
            },
          ),
          _buildAnimatedListTile(
            icon: Icons.camera_alt,
            label: 'Changer la photo de profil',
            onTap: () {
              print("Changement de la photo de profil.");
              // Logique de changement de la photo de profil
            },
          ),
          _buildAnimatedListTile(
            icon: Icons.lock,
            label: 'Changer le mot de passe',
            onTap: () {
              print("Changement du mot de passe.");
              // Logique de changement de mot de passe
            },
          ),
        ],
      ),
    );
  }

  Widget _buildStatisticsSectionCard() {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            const Text(
              'Statistiques Personnelles',
              style: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
                color: Colors.white,
              ),
            ),
            const SizedBox(height: 10),
            _buildStatTile(
              icon: Icons.event,
              label: 'Événements Participés',
              value: '12',
            ),
            _buildStatTile(
              icon: Icons.place,
              label: 'Établissements Visités',
              value: '8',
            ),
            _buildStatTile(
              icon: Icons.post_add,
              label: 'Publications',
              value: '24',
            ),
            _buildStatTile(
              icon: Icons.group,
              label: 'Amis/Followers',
              value: '150',
            ),
          ],
        ),
      ),
    );
  }

  Widget _buildExpandableSectionCard({
    required String title,
    required IconData icon,
    required List<Widget> children,
  }) {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: ExpansionTile(
        title: Text(
          title,
          style: const TextStyle(
            fontSize: 18,
            fontWeight: FontWeight.bold,
            color: Colors.white,
          ),
        ),
        leading: Icon(icon, color: AppColors.accentColor),
        iconColor: AppColors.accentColor,
        collapsedIconColor: AppColors.accentColor,
        children: children,
      ),
    );
  }

  Widget _buildSupportSectionCard() {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: Column(
        children: [
          const Padding(
            padding: EdgeInsets.all(16.0),
            child: Text(
              'Support et Assistance',
              style: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
                color: Colors.white,
              ),
            ),
          ),
          _buildAnimatedListTile(
            icon: Icons.help,
            label: 'Support et Assistance',
            onTap: () {
              print("Accès au Support et Assistance.");
              // Logique de navigation vers le support
            },
          ),
          _buildAnimatedListTile(
            icon: Icons.article,
            label: 'Conditions d\'utilisation',
            onTap: () {
              print("Accès aux conditions d'utilisation.");
              // Logique de navigation vers les conditions d'utilisation
            },
          ),
          _buildAnimatedListTile(
            icon: Icons.privacy_tip,
            label: 'Politique de confidentialité',
            onTap: () {
              print("Accès à la politique de confidentialité.");
              // Logique de navigation vers la politique de confidentialité
            },
          ),
        ],
      ),
    );
  }

  Widget _buildAccountDeletionCard(BuildContext context) {
    return Card(
      color: AppColors.cardColor,
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
      elevation: 2,
      child: ListTile(
        leading: const Icon(Icons.delete, color: Colors.redAccent),
        title: const Text(
          'Supprimer le compte',
          style: TextStyle(color: Colors.redAccent, fontWeight: FontWeight.bold),
        ),
        onTap: () {
          _showDeleteConfirmationDialog(context);
        },
      ),
    );
  }

  void _showDeleteConfirmationDialog(BuildContext context) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          backgroundColor: AppColors.backgroundColor,
          title: const Text(
            'Confirmer la suppression',
            style: TextStyle(color: Colors.white),
          ),
          content: const Text(
            'Êtes-vous sûr de vouloir supprimer votre compte ? Cette action est irréversible.',
            style: TextStyle(color: Colors.white70),
          ),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text(
                'Annuler',
                style: TextStyle(color: AppColors.accentColor),
              ),
            ),
            TextButton(
              onPressed: () {
                print("Suppression du compte confirmée.");
                Navigator.of(context).pop();
              },
              child: const Text(
                'Supprimer',
                style: TextStyle(color: Colors.redAccent),
              ),
            ),
          ],
        );
      },
    );
  }

  Widget _buildAnimatedListTile({
    required IconData icon,
    required String label,
    required VoidCallback onTap,
  }) {
    return InkWell(
      onTap: onTap,
      borderRadius: BorderRadius.circular(10),
      splashColor: Colors.blueAccent.withOpacity(0.2),
      child: ListTile(
        leading: Icon(icon, color: AppColors.accentColor),
        title: Text(
          label,
          style: const TextStyle(color: Colors.white, fontWeight: FontWeight.w600),
        ),
      ),
    );
  }

  Widget _buildStatTile({
    required IconData icon,
    required String label,
    required String value,
  }) {
    return ListTile(
      leading: Icon(icon, color: AppColors.accentColor),
      title: Text(label, style: const TextStyle(color: Colors.white)),
      trailing: Text(
        value,
        style: const TextStyle(
          color: Colors.white,
          fontWeight: FontWeight.bold,
          fontSize: 16,
        ),
      ),
    );
  }
}
