import ReactTable from "@/components/ReactTable/ReactTable";
import { handleSweetAlert } from "@/components/Modal/SweetAlertConfirm";
import { cadastrarVeiculo } from "@/requests/CRUD/Veiculos/cadastrarVeiculo";
import { deletarVeiculo } from "@/requests/CRUD/Veiculos/deletarVeiculo";
import { editarVeiculo } from "@/requests/CRUD/Veiculos/editarVeiculo";
import { listarVeiculos } from "@/requests/CRUD/Veiculos/listarVeiculos";
import { IoTrashOutline } from "react-icons/io5";
import FormVeiculo from "./FormVeiculo";

const labelsStatusVeiculo: { [key: string]: string } = {
  "0": "Inativo",
  "1": "Disponível",
  "2": "Em Uso",
  "-1": "Manutenção",
};

const columns = [
  {
    header: "Código",
    accessorKey: "id_veiculo",
  },
  {
    header: "Status",
    accessorKey: "status_veiculo",
    cell: (info: any) => labelsStatusVeiculo[info.getValue()] ?? info.getValue(),
  },
  {
    header: "Placa",
    accessorKey: "placa_veiculo",
  },
  {
    header: "Modelo",
    accessorKey: "modelo_veiculo",
  },
  {
    header: "Marca",
    accessorKey: "marca_veiculo",
  },
  {
    header: "Ano",
    accessorKey: "ano_veiculo",
  },
  {
    header: "Cor",
    accessorKey: "cor_veiculo",
  },
  {
    header: "Tipo",
    accessorKey: "tipo_veiculo",
  },
  {
    header: "Combustível",
    accessorKey: "combustivel_veiculo",
  },
  {
    header: "Quilometragem",
    accessorKey: "quilometragem_veiculo",
  },
  {
    header: "Observações",
    accessorKey: "observacoes_veiculo",
  },
];

const CadVeiculos = () => {
  return (
    <div className="bg-white dark:bg-black border border-coolGray-200 dark:border-trueGray-800 rounded-lg shadow-sm p-4">
      <h2 className="text-xl max-sm:text-sm font-bold mb-4">
        Cadastro de Veículos
      </h2>
      <ReactTable
        columns={columns}
        listFunction={listarVeiculos}
        createFunction={cadastrarVeiculo}
        editFunction={editarVeiculo}
        Form={FormVeiculo}
        canEdit
        // canDesactive
        idCol="id_veiculo"
        // isActiveCol="status_veiculo"
        pageName="Veículo"
        actionButtons={(rowData: any, updateTable: any, setIsLoading: any) => [
          {
            className: "bg-danger text-white",
            onClick: () => {
              handleSweetAlert(
                {
                  icon: "error",
                  title: "Excluir Veículo",
                  html: `Tem certeza que deseja <b>Excluir</b> o veículo <b>${rowData.placa_veiculo}</b>?`,
                },
                () => {
                  setIsLoading(true);
                  deletarVeiculo({ id_veiculo: rowData.id_veiculo })
                    .then(() => updateTable())
                    .finally(() => setIsLoading(false));
                }
              );
            },
            content: <IoTrashOutline />,
          },
        ]}
      />
    </div>
  );
};

export default CadVeiculos;
