import { Table } from "flowbite-react"; import { useEffect, useState } from "react"; import { FaEdit, FaStethoscope } from "react-icons/fa"; import { useDispatch, useSelector } from "react-redux"; import { Link, useLocation, useOutletContext, useParams, } from "react-router-dom"; import { getDaftarPoli, getDetailPriksaByPeriksaId, getObat, getPeriksa, getPeriksaByDafPol, updatePeriksa, } from "../../../config/Redux/Action"; import Modals from "../../../components/Modals"; import Input from "../../../components/Input"; import ReactSelect from "../../../components/ReactSelect"; const DaftarPeriksa = () => { const pathName = useLocation().pathname; const [role] = useOutletContext(); const { id } = useParams(); const { daftarPoli } = useSelector((state) => state.daftarPoliReducer); const { periksa, periksaByDafPolId } = useSelector( (state) => state.periksaReducer ); const { detailPriksaByPriksaId } = useSelector( (state) => state.detailPeriksaReducer ); const { obat } = useSelector((state) => state.obatReducer); const dispatch = useDispatch(); const [edit, setEdit] = useState(false); const [idPeriksa, setIdPeriksa] = useState(""); const [obatValue, setObatValue] = useState([]); const [editForm, setEditForm] = useState({ id_daftar_poli: periksaByDafPolId?.id_daftar_poli, tgl_periksa: periksaByDafPolId?.tanggal, catatan: periksaByDafPolId?.catatan, biaya_periksa: obatValue.reduce((acc, curr) => acc + curr.harga, 150000), }); const handleEdit = (id) => { setEdit(true); setIdPeriksa(id); }; const handleUpdate = (e) => { e.preventDefault(); const data = { ...editForm, }; dispatch(updatePeriksa(periksaByDafPolId?.id, data, obatValue)); setEdit(false); }; const formatPriceInRupiah = (price) => { return new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(price); }; useEffect(() => { dispatch(getDaftarPoli()); }, [dispatch]); useEffect(() => { dispatch(getPeriksa()); }, [dispatch]); useEffect(() => { if (idPeriksa !== "") { dispatch(getPeriksaByDafPol(idPeriksa)); dispatch(getObat()); } }, [dispatch, idPeriksa]); useEffect(() => { if (periksaByDafPolId?.id) { dispatch(getDetailPriksaByPeriksaId(periksaByDafPolId?.id)); } }, [dispatch, periksaByDafPolId?.id]); useEffect(() => { if (periksaByDafPolId) { setEditForm({ id_daftar_poli: periksaByDafPolId.id_daftar_poli, tgl_periksa: periksaByDafPolId.tanggal, catatan: periksaByDafPolId.catatan, biaya_periksa: obatValue.reduce( (acc, curr) => acc + curr.harga, 150000 ), }); } }, [periksaByDafPolId, obatValue]); useEffect(() => { if (detailPriksaByPriksaId?.length > 0) { setObatValue([]); // Reset array obat menjadi kosong sebelum membangun kembali detailPriksaByPriksaId?.forEach((item) => { setObatValue((obat) => [ ...obat, { value: item.obat.id, label: item.obat.nama_obat, harga: item.obat.harga, }, ]); }); } else { setObatValue([]); // Jika detailPriksaByPriksaId kosong, reset obat menjadi array kosong } }, [detailPriksaByPriksaId]); useEffect(() => { if (role !== "dokter") { window.location.href = "/"; } }, [role]); return (