import 'package:flutter/material.dart';
import 'package:em2rp/models/equipment_model.dart';

/// Dialog affichant la liste des équipements non validés
class MissingEquipmentDialog extends StatelessWidget {
  final List<EquipmentModel> missingEquipments;
  final String eventId;
  final bool isReturnMode;

  const MissingEquipmentDialog({
    super.key,
    required this.missingEquipments,
    required this.eventId,
    this.isReturnMode = false,
  });

  @override
  Widget build(BuildContext context) {
    return Dialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(16),
      ),
      child: Container(
        constraints: const BoxConstraints(maxWidth: 500, maxHeight: 600),
        padding: const EdgeInsets.all(24),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            // Icône d'avertissement
            Container(
              padding: const EdgeInsets.all(16),
              decoration: BoxDecoration(
                color: Colors.orange.shade100,
                shape: BoxShape.circle,
              ),
              child: Icon(
                Icons.warning_amber_rounded,
                size: 48,
                color: Colors.orange.shade700,
              ),
            ),

            const SizedBox(height: 16),

            // Titre
            Text(
              isReturnMode
                  ? 'Équipements non retournés'
                  : 'Équipements non préparés',
              style: const TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
              ),
              textAlign: TextAlign.center,
            ),

            const SizedBox(height: 8),

            // Description
            Text(
              isReturnMode
                  ? 'Les équipements suivants n\'ont pas été marqués comme retournés :'
                  : 'Les équipements suivants n\'ont pas été marqués comme préparés :',
              style: TextStyle(
                fontSize: 14,
                color: Colors.grey.shade700,
              ),
              textAlign: TextAlign.center,
            ),

            const SizedBox(height: 16),

            // Liste des équipements manquants
            Flexible(
              child: Container(
                decoration: BoxDecoration(
                  border: Border.all(color: Colors.grey.shade300),
                  borderRadius: BorderRadius.circular(8),
                ),
                child: ListView.separated(
                  shrinkWrap: true,
                  itemCount: missingEquipments.length,
                  separatorBuilder: (context, index) => const Divider(height: 1),
                  itemBuilder: (context, index) {
                    final equipment = missingEquipments[index];
                    return ListTile(
                      dense: true,
                      leading: equipment.category.getIcon(
                        size: 20,
                        color: equipment.category.color,
                      ),
                      title: Text(
                        equipment.id,
                        style: const TextStyle(fontWeight: FontWeight.bold),
                      ),
                      subtitle: equipment.brand != null || equipment.model != null
                          ? Text('${equipment.brand ?? ''} ${equipment.model ?? ''}'.trim())
                          : null,
                    );
                  },
                ),
              ),
            ),

            const SizedBox(height: 24),

            // Boutons d'action
            Column(
              children: [
                // Bouton 1 : Confirmer malgré les manquants (primaire - rouge)
                SizedBox(
                  width: double.infinity,
                  child: ElevatedButton.icon(
                    onPressed: () => Navigator.of(context).pop('confirm_with_missing'),
                    style: ElevatedButton.styleFrom(
                      backgroundColor: Colors.red.shade600,
                      padding: const EdgeInsets.symmetric(vertical: 14),
                    ),
                    icon: const Icon(Icons.check_circle_outline, color: Colors.white),
                    label: Text(
                      isReturnMode
                          ? 'Confirmer malgré les manquants'
                          : 'Valider malgré les manquants',
                      style: const TextStyle(
                        color: Colors.white,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                ),

                const SizedBox(height: 12),

                // Bouton 2 : Marquer comme validés (secondaire - vert)
                SizedBox(
                  width: double.infinity,
                  child: ElevatedButton.icon(
                    onPressed: () => Navigator.of(context).pop('validate_missing'),
                    style: ElevatedButton.styleFrom(
                      backgroundColor: Colors.green,
                      padding: const EdgeInsets.symmetric(vertical: 14),
                    ),
                    icon: const Icon(Icons.done_all, color: Colors.white),
                    label: Text(
                      isReturnMode
                          ? 'Marquer tout comme retourné'
                          : 'Marquer tout comme préparé',
                      style: const TextStyle(
                        color: Colors.white,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                ),

                const SizedBox(height: 12),

                // Bouton 3 : Retourner à la liste (tertiaire - outline)
                SizedBox(
                  width: double.infinity,
                  child: OutlinedButton.icon(
                    onPressed: () => Navigator.of(context).pop(),
                    style: OutlinedButton.styleFrom(
                      padding: const EdgeInsets.symmetric(vertical: 14),
                      side: BorderSide(color: Colors.grey.shade400),
                    ),
                    icon: Icon(Icons.arrow_back, color: Colors.grey.shade700),
                    label: Text(
                      'Retourner à la liste',
                      style: TextStyle(
                        color: Colors.grey.shade700,
                        fontWeight: FontWeight.w500,
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

