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

import '../../core/theme/theme_provider.dart';

void showEventOptions(BuildContext context, GlobalKey key) {
  // Obtient la position de l'élément pour afficher le menu contextuel
  final RenderBox renderBox =
  key.currentContext!.findRenderObject() as RenderBox;
  final Offset offset = renderBox.localToGlobal(Offset.zero);
  final RelativeRect position = RelativeRect.fromLTRB(
    offset.dx,
    offset.dy,
    offset.dx + renderBox.size.width,
    offset.dy + renderBox.size.height,
  );

  // Affiche le menu contextuel avec des options personnalisées
  showMenu(
    context: context,
    position: position,
    items: [
      _buildElegantMenuItem(
        icon: Icons.info_outline,
        label: 'Voir les détails',
        color: AppColors.primary, // Utilise la couleur primaire dynamique
        onTap: () {
          print('Voir les détails');
          // Log d'action pour suivre l'interaction utilisateur
        },
      ),
      _buildElegantMenuItem(
        icon: Icons.edit,
        label: 'Modifier l\'événement',
        color: AppColors.secondary, // Utilise la couleur secondaire dynamique
        onTap: () {
          print('Modifier l\'événement');
        },
      ),
      _buildElegantMenuItem(
        icon: Icons.delete_outline,
        label: 'Supprimer l\'événement',
        color: AppColors.errorColor, // Utilise la couleur d'erreur dynamique
        onTap: () {
          _showDeleteConfirmation(context);
        },
      ),
    ],
    elevation: 12.0, // Niveau d'élévation du menu pour une ombre modérée
    shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(20.0), // Coins arrondis pour un look moderne
    ),
    color: AppColors.customBackgroundColor, // Surface dynamique selon le thème
  ).then((value) {
    if (value != null) {
      HapticFeedback.lightImpact(); // Retour haptique pour une meilleure UX
    }
  });
}

// Construction d'un élément de menu stylisé
PopupMenuItem _buildElegantMenuItem({
  required IconData icon,
  required String label,
  required Color color,
  required VoidCallback onTap,
}) {
  return PopupMenuItem(
    value: label,
    child: GestureDetector(
      onTap: () {
        onTap();
      },
      child: Container(
        padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(12),
          color: AppColors.cardColor, // Couleur de fond dynamique du conteneur
        ),
        child: Row(
          children: [
            Icon(icon, color: color, size: 15), // Icône avec couleur personnalisée
            const SizedBox(width: 12),
            Expanded(
              child: Text(
                label,
                style: TextStyle(
                  color: color, // Couleur de texte dynamique
                  fontWeight: FontWeight.w600,
                  fontSize: 12,
                ),
              ),
            ),
          ],
        ),
      ),
    ),
  );
}

void _showDeleteConfirmation(BuildContext context) {
  // Récupère le thème sans écoute, car la fonction est appelée en dehors de l'arbre de widgets.
  final themeProvider = Provider.of<ThemeProvider>(context, listen: false);

  // Affiche une boîte de dialogue pour confirmer la suppression
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Row(
          children: [
            Icon(Icons.warning_amber_rounded, color: AppColors.errorColor),
            const SizedBox(width: 8),
            Text(
              'Supprimer l\'événement',
              style: TextStyle(
                color: AppColors.errorColor, // Utilisation de la couleur d'erreur dynamique
                fontWeight: FontWeight.bold,
              ),
            ),
          ],
        ),
        content: Text(
          'Voulez-vous vraiment supprimer cet événement ? Cette action est irréversible.',
          style: TextStyle(
            color: themeProvider.isDarkMode ? AppColors.lightOnPrimary : AppColors.darkPrimary, // Texte principal dynamique
            fontSize: 15,
          ),
        ),
        actions: <Widget>[
          TextButton(
            style: ButtonStyle(
              overlayColor: MaterialStateProperty.all(Colors.grey.shade200),
            ),
            child: Text('Annuler', style: TextStyle(color: Colors.grey.shade700)),
            onPressed: () {
              Navigator.of(context).pop();
            },
          ),
          ElevatedButton.icon(
            icon: Icon(Icons.delete, color: themeProvider.isDarkMode ? AppColors.darkPrimary : AppColors.lightOnPrimary, size: 18),
            style: ElevatedButton.styleFrom(
              backgroundColor: AppColors.errorColor, // Bouton de suppression en couleur d'erreur
              padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12),
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(8.0),
              ),
              textStyle: TextStyle(fontWeight: FontWeight.bold),
            ),
            label: Text('Supprimer'),
            onPressed: () {
              Navigator.of(context).pop();
              print('Événement supprimé');
              // Logique de suppression réelle ici
            },
          ),
        ],
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(15),
        ),
      );
    },
  );
}
