import React from 'react';
import { Models } from 'appwrite';
import ListHeader from './ListHeader';
import DataTable, { Column } from './DataTable';
import Pagination from './Pagination';
import TableActions from './TableActions';

interface EmpresaListProps {
  empresas: Models.Document[];
  loading: boolean;
  error: string | null;
  onEdit: (empresa: Models.Document) => void;
  onDelete: (id: string) => Promise<boolean>;
}

const EmpresaList: React.FC<EmpresaListProps> = ({
  empresas,
  loading,
  error,
  onEdit,
  onDelete,
}) => {
  const handleDelete = async (id: string) => {
    // Validar se o ID foi fornecido
    if (!id) {
      alert('❌ Erro: ID da empresa não encontrado.');
      return;
    }

    // Encontrar a empresa na lista para mostrar informações no confirm
    const empresa = empresas.find(emp => emp.$id === id);
    if (!empresa) {
      console.warn('⚠️ Empresa não encontrada na lista:', id);
      alert('❌ Erro: Empresa não encontrada na lista. Pode já ter sido excluída.');
      return;
    }

    const nomeEmpresa = (empresa as any)['nome-fantasia'] || (empresa as any)['razao-social'] || 'Empresa sem nome';
    const confirmMessage = `⚠️ Tem certeza que deseja deletar a empresa "${nomeEmpresa}"?\n\nEsta ação não pode ser desfeita.`;
    
    if (confirm(confirmMessage)) {
      console.log('🗑️ Iniciando exclusão da empresa:', { id, nome: nomeEmpresa });
      
      try {
        await onDelete(id);
        console.log('✅ Exclusão concluída com sucesso');
      } catch (error) {
        console.error('❌ Erro durante a exclusão:', error);
        alert('❌ Erro ao excluir a empresa. Tente novamente.');
      }
    }
  };

  const columns: Column<Models.Document>[] = [
    { key: 'nome-fantasia', header: 'Nome Fantasia' },
    { key: 'razao-social', header: 'Razão Social' },
    { key: 'cnpj', header: 'CNPJ' },
    { key: '$id', header: 'ID' },
  ];

  const totalEmpresas = empresas.length;

  return (
    <div className="container mx-auto px-4 py-8">
      <ListHeader title="Lista de Empresas">
      </ListHeader>

      {error && (
        <div className="bg-red-100 border border-red-400 text-red-700 px-4 py-3 rounded mb-4">
          {error}
        </div>
      )}

      {loading ? (
        <div className="flex justify-center items-center min-h-screen">
          <div className="text-lg">Carregando empresas...</div>
        </div>
      ) : (
        <>
          <DataTable
            columns={columns}
            data={empresas}
            actions={(empresa) => (
              <TableActions
                onEdit={() => onEdit(empresa)}
                onDelete={() => handleDelete(empresa.$id)}
              />
            )}
          />

          <div className="mt-4 flex justify-between items-center">
            <div className="text-sm text-gray-600">
              {totalEmpresas > 0 ? (
                <>Mostrando 1 - {totalEmpresas} de {totalEmpresas} empresas</>
              ) : (
                'Total de empresas: 0'
              )}
            </div>
            <Pagination page={1} total={1} onPrev={() => {}} onNext={() => {}} />
          </div>
        </>
      )}
    </div>
  );
};

export default EmpresaList;
