import React from 'react';
import { BaseDeleteModal } from '../../ui';
import { IngredientResponse, DeletionSummary } from '../../../api/types/inventory';

interface DeleteIngredientModalProps {
  isOpen: boolean;
  onClose: () => void;
  ingredient: IngredientResponse;
  onSoftDelete: (ingredientId: string) => Promise<void>;
  onHardDelete: (ingredientId: string) => Promise<DeletionSummary>;
  isLoading?: boolean;
}

/**
 * Modal for ingredient deletion with soft/hard delete options
 */
export const DeleteIngredientModal: React.FC<DeleteIngredientModalProps> = ({
  isOpen,
  onClose,
  ingredient,
  onSoftDelete,
  onHardDelete,
  isLoading = false,
}) => {
  return (
    <BaseDeleteModal<IngredientResponse, DeletionSummary>
      isOpen={isOpen}
      onClose={onClose}
      entity={ingredient}
      onSoftDelete={onSoftDelete}
      onHardDelete={onHardDelete}
      isLoading={isLoading}
      title="Eliminar Artículo"
      getEntityId={(ing) => ing.id}
      getEntityDisplay={(ing) => ({
        primaryText: ing.name,
        secondaryText: `Categoría: ${ing.category} • Stock actual: ${ing.current_stock || 0}`,
      })}
      softDeleteOption={{
        title: 'Desactivar (Recomendado)',
        description: 'El artículo se marca como inactivo pero conserva todo su historial. Ideal para artículos temporalmente fuera del catálogo.',
        benefits: '✓ Reversible • ✓ Conserva historial • ✓ Conserva stock',
      }}
      hardDeleteOption={{
        title: 'Eliminar Permanentemente',
        description: 'Elimina completamente el artículo y todos sus datos asociados. Use solo para datos erróneos o pruebas.',
        benefits: '⚠️ No reversible • ⚠️ Elimina historial • ⚠️ Elimina stock',
        enabled: true,
      }}
      softDeleteWarning={{
        title: 'ℹ️ Esta acción desactivará el artículo:',
        items: [
          'El artículo se marcará como inactivo',
          'No aparecerá en listas activas',
          'Se conserva todo el historial y stock',
          'Se puede reactivar posteriormente',
        ],
      }}
      hardDeleteWarning={{
        title: '⚠️ Esta acción eliminará permanentemente:',
        items: [
          'El artículo y toda su información',
          'Todos los lotes de stock asociados',
          'Todo el historial de movimientos',
          'Las alertas relacionadas',
        ],
        footer: 'Esta acción NO se puede deshacer',
      }}
      requireConfirmText={true}
      confirmText="ELIMINAR"
      showSuccessScreen={false}
      showDeletionSummary={true}
      deletionSummaryTitle="Eliminación Completada"
      formatDeletionSummary={(summary) => ({
        'Lotes de stock eliminados': summary.deleted_stock_entries,
        'Movimientos eliminados': summary.deleted_stock_movements,
        'Alertas eliminadas': summary.deleted_stock_alerts,
      })}
    />
  );
};

export default DeleteIngredientModal;
