import Breadcrumb from "@/components/Breadcrumbs/Breadcrumb";
import Container from "@/components/Forms/Container";
import ReactTable from "@/components/ReactTable/ReactTable";
import {
  cadastrarFinanciador,
  deleteFinanciador,
} from "@/requests/CRUD/Cliente/cadastroCliente";
import { listarFinanciador } from "@/requests/CRUD/Cliente/listarClientes";
import { listarColetaFinanciador } from "@/requests/CRUD/ColetaDados/cadastroColetaDados";
import { FieldValues } from "react-hook-form";
import { BiTrash } from "react-icons/bi";
import Swal from "sweetalert2";
import FormFinanciador from "./FormFinanciador";

const ConsultaFinanciador = ({ idCliente }: any) => {
  const columns = [
    {
      header: "ID",
      accessorKey: "id_financiador",
    },
    {
      header: "Status Financiador",
      accessorKey: "status_financiador",
    },
    {
      header: "Nome",
      accessorKey: "nome_financiador",
    },
    {
      header: "Email",
      accessorKey: "email_financiador",
    },
    {
      header: "Telefone",
      accessorKey: "telefone1_financiador",
    },
    {
      header: "Cidade",
      accessorKey: "cidade_financiador",
    },
    {
      header: "Estado",
      accessorKey: "estado_financiador",
    },
    {
      header: "Cpf/Cnpj",
      accessorKey: "cpfcnpj_financiador",
    },
  ];

  const onSubmitFunction = async (data: FieldValues) => {
    data["id_cliente"] = idCliente;
    return cadastrarFinanciador(data);
  };

  const editarFinanciador = async (data: FieldValues) => {
    return cadastrarFinanciador(data);
  };

  return (
    <>
      <Container>
        <Breadcrumb pageName="Financiadores" />
        <ReactTable
          columns={columns}
          listFunction={listarFinanciador}
          idCol="id_financiador"
          formatFunction={(arr: any) => {
            return arr.filter((e: any) => e.id_cliente == idCliente);
          }}
          isActiveCol="status_financiador"
          canEdit
          canDesactive
          createFunction={onSubmitFunction}
          editFunction={editarFinanciador}
          Form={FormFinanciador}
          pageName="Financiador"
          actionButtons={(
            rowData: any,
            updateTable: any,
            setIsLoading: any
          ) => [
            {
              title: "Excluir",
              className: "bg-danger text-white",
              onClick: (e: any) => {
                Swal.fire({
                  title: "Excluir Financiador",
                  text: `Tem certeza que deseja excluir o financiador ${rowData.id_financiador}?`,
                  icon: "warning",
                  showCancelButton: true,
                  confirmButtonColor: "#3085d6",
                  cancelButtonColor: "#d33",
                  confirmButtonText: "Sim",
                  cancelButtonText: "Cancelar",
                }).then(async (result) => {
                  if (result.isConfirmed) {
                    const hasColeta = await listarColetaFinanciador(
                      rowData.id_financiador
                    );
                    if (hasColeta.length == 0) {
                      await deleteFinanciador({
                        id_financiador: rowData.id_financiador,
                      });
                      updateTable();
                    } else {
                      Swal.fire({
                        title: "Erro",
                        text: `Este financiador se encontra nos negócio(s) ${hasColeta.map((e: any) => e.id_coleta).join(", ")} e não pode ser excluído.`,
                        icon: "error",
                      });
                    }
                  }
                });
              },
              content: <BiTrash />,
            },
          ]}
        />
      </Container>
    </>
  );
};

export default ConsultaFinanciador;
