import React, { useEffect, useRef, useState } from "react"
import { MultiSelect } from "react-multi-select-component"
import { Col, Label, Row } from "reactstrap"
import Select from "react-select"
import { Button as ButtonP } from "primereact/button"
import { isObjEmpty } from "../util"
import $ from "jquery"
import collect from "collect.js"
import { setSelectedOpsi } from "../store/KpdlStore"
import { useDispatch, useSelector } from "react-redux"
const NipPengampu = ({ dataSend, setDataSend, activeTab, toast, setHiddenGraphMatoa, dataOpsi }) => {
  const dispatch = useDispatch()
  const storeKpdl = useSelector((state) => state.kpdl)

  const [kanwil, setKanwil] = useState({})
  const [kpp, setKpp] = useState({})
  const [seksi, setSeksi] = useState([])
  const [ar, setAr] = useState([])

  const [kanwilSelected, setKanwilSelected] = useState(null)
  const [kppSelected, setKppSelected] = useState({})
  const [seksiSelected, setSeksiSelected] = useState([])
  const [arSelected, setArSelected] = useState([])
  const base_url = "<?=base_url()?>"
  useEffect(() => {
    $.ajax({
      url: base_url + "kewilayahan/ref/kanwil",
      method: "GET",
      dataType: "json",
      success: (data) => {
        setKanwil(data)
      }
    })
  }, [])

  useEffect(() => {
    setKpp(null)
    setSeksi([])
    setAr([])
    setKppSelected(null)
    setSeksiSelected([])
    setArSelected([])
    if (kanwilSelected && !isObjEmpty(kanwilSelected)) {
      const kanwil = kanwilSelected.value
      $.ajax({
        url: base_url + "kewilayahan/ref/kpp",
        method: "GET",
        dataType: "json",
        data: { kanwil },
        success: (data) => {
          setKpp(data)
        }
      })
    }
  }, [kanwilSelected])

  useEffect(() => {
    setSeksi([])
    setAr([])
    setSeksiSelected([])
    setArSelected([])
    if (kppSelected && !isObjEmpty(kppSelected)) {
      const kpp = kppSelected.value
      $.ajax({
        url: base_url + "kewilayahan/ref/seksi",
        method: "GET",
        dataType: "json",
        data: { kpp },
        success: (data) => {
          setSeksi(data)
        }
      })
    }
  }, [kppSelected])

  useEffect(() => {
    setAr([])
    setArSelected([])
    const seksi = collect(seksiSelected).pluck("value").all()
    if (seksi.length && !isObjEmpty(seksiSelected)) {
      const kpp = kppSelected.value

      $.ajax({
        url: base_url + "kewilayahan/ref/ar",
        method: "POST",
        dataType: "json",
        data: { kpp, seksi },
        success: (data) => {
          setAr(data)
        }
      })
    }
  }, [seksiSelected])
  const buttonProsesOnClick = () => {
    const nip_ar_pengampu = collect(arSelected).pluck("value").all()
    if (nip_ar_pengampu.length) {
      dispatch(setSelectedOpsi(dataOpsi.pengampu))
      setDataSend({ opsiWilZona: dataOpsi.pengampu.key, nip_ar_pengampu })
      setHiddenGraphMatoa(true)
    } else {
      toast.current.show({ severity: "info", summary: "Info", detail: "AR Pengampu harus dipilih" })
    }
  }
  return (
    <>
      <Row>
        <Col md="3">
          <Label className="form-label" for="basicInput">
            Kanwil
          </Label>
          <Select
            placeholder="Pilih Kanwil"
            className="basic-single w-100"
            onChange={(e) => {
              setKanwilSelected(e)
            }}
            classNamePrefix="select"
            // defaultValue={kanwilSelected}
            value={kanwilSelected}
            isClearable={false}
            options={kanwil}
          />
        </Col>
        <Col md="3">
          <Label className="form-label" for="Pilih KPP">
            KPP
          </Label>
          <Select
            placeholder="Pilih KPP"
            className="basic-single w-100"
            onChange={(e) => {
              setKppSelected(e)
            }}
            classNamePrefix="select"
            // defaultValue={kanwilSelected}
            value={kppSelected}
            isClearable={false}
            options={kpp}
          />
        </Col>
        <Col md="3">
          <Label className="form-label" for="Pilih Seksi">
            Seksi
          </Label>
          <MultiSelect
            className="me-1 w-full"
            hasSelectAll={true}
            debounceDuration={300}
            options={seksi}
            value={seksiSelected}
            onChange={(e) => {
              setSeksiSelected(e)
            }}
            labelledBy="Pilih Seksi"
            overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih Seksi" }}
          />
        </Col>
        <Col md="3">
          <Label className="form-label" for="Pilih AR">
            AR
          </Label>
          <MultiSelect
            className="me-1 w-full"
            hasSelectAll={true}
            debounceDuration={300}
            options={ar}
            value={arSelected}
            onChange={(e) => {
              setArSelected(e)
            }}
            labelledBy="Pilih AR"
            overrideStrings={{ allItemsAreSelected: "Semua dipilih", selectSomeItems: "Pilih AR" }}
          />
        </Col>
      </Row>
      <Row className="mt-2">
        <Col sm="12">
          <ButtonP onClick={() => buttonProsesOnClick()} label="Proses" severity="" rounded className="w-10rem text-white text-base" />
        </Col>
      </Row>
    </>
  )
}

export default NipPengampu