import Input from "@/components/Forms/Input";
import InputSelectComponent from "@/components/Forms/InputSelect";
import { useEffect, useState } from "react";
import Swal from "sweetalert2";

const CfgPendenciaFaturamento = ({ form, defaultValues }: any) => {
  const [exigirPendenciaCompraMaterial, setExigirPendenciaCompraMaterial] =
    useState(
      Object.keys(form.control._formValues).includes("exigir_faturamento_loja")
        ? form.control._formValues?.exigir_faturamento_loja
        : defaultValues.exigir_faturamento_loja == "1",
    );

  useEffect(() => {
    form.setValue("exigir_faturamento_loja", exigirPendenciaCompraMaterial);
    if (!exigirPendenciaCompraMaterial) {
      form.control.unregister(["pendencia_compra_material_loja"], {
        keepError: false,
        keepValue: false,
      });
      form.setYupSchema((prev: any) => {
        const fields: any = prev.fields;
        delete fields["pendencia_compra_material_loja"];
        prev.fields = fields;
        return prev;
      });
    }
  }, [exigirPendenciaCompraMaterial]);

  return (
    <div>
      <Input
        name="exigir_faturamento_loja"
        label="Exigir Faturamento"
        formulario={form}
        type="checkbox"
        checked={
          Object.keys(form.control._formValues).includes(
            "exigir_faturamento_loja",
          )
            ? form.control._formValues?.exigir_faturamento_loja
            : defaultValues.exigir_faturamento_loja == "1"
        }
        onChange={(e) => {
          if (!e.target.checked) {
            if (
              ((Object.keys(form.control._formValues).includes(
                "exigir_pendencia_compra_material_loja",
              )
                ? form.control._formValues
                    ?.exigir_pendencia_compra_material_loja
                : defaultValues.exigir_pendencia_compra_material_loja == "1") &&
                (Object.keys(form.control._formValues).includes(
                  "pendencia_compra_material_loja",
                )
                  ? form.control._formValues.pendencia_compra_material_loja
                      .value == "3"
                  : defaultValues.pendencia_compra_material_loja == "3")) ||
              (Object.keys(form.control._formValues).includes(
                "pendencia_engenharia_loja",
              )
                ? form.control._formValues.pendencia_engenharia_loja.value ==
                  "3"
                : defaultValues.pendencia_engenharia_loja == "3")
            ) {
              Swal.fire({
                title: "Não foi possível mudar essa opção",
                icon: "warning",
                html: "Não foi possível desmarcar essa opção pois há outras pendências que vêm antes de Faturamento",
                confirmButtonText: "OK",
                confirmButtonColor: "#4CAF50",
              });
              e.target.checked = true;
              form.setValue("exigir_faturamento_loja", true);
            }
          }
          setExigirPendenciaCompraMaterial(e.target.checked);
        }}
      />
      {exigirPendenciaCompraMaterial && (
        // -> Compras (Se estiver configurado para usar a pendência, senão não aparece)
        // -> Engenharia
        // -> Agendamento da Instalação
        // -> Conclusão da Instalação
        <InputSelectComponent
          name="pendencia_faturamento_loja"
          label="Pendência de Faturamento antes de:"
          formulario={form}
          options={[
            ...(form.control._formValues
              ?.exigir_pendencia_compra_material_loja == "1" ||
            defaultValues.exigir_pendencia_compra_material_loja == "1"
              ? [{ value: "1", label: "Compra de Kit" }]
              : []),
            { value: "3", label: "Agendamento da Instalação" },
            { value: "4", label: "Conclusão da Instalação" },
            { value: "2", label: "Engenharia" },
          ]}
          width="w-fit"
          skipEffect
          // onChange={(e: any) => {
          //   if (
          //     e.value == defaultValues.pendencia_engenharia_loja ||
          //     e.value == defaultValues.pendencia_compra_material_loja ||
          //     form.control._formValues?.pendencia_engenharia_loja?.value ==
          //       e.value ||
          //     form.control._formValues?.pendencia_compra_material_loja?.value ==
          //       e.value
          //   ) {
          //     // form.setValue("pendencia_faturamento_loja", "");
          //     // return Swal.fire(
          //     //   "Atenção",
          //     //   "A pendência de faturamento não pode ser a mesma de outra etapa",
          //     //   "warning"
          //     // );
          //   }
          // }}
          defaultValue={defaultValues.pendencia_faturamento_loja}
          required
          error="Informe antes de que etapa a pendência de faturamento vai entrar"
        />
      )}
    </div>
  );
};

export default CfgPendenciaFaturamento;
