import { useState, useContext } from "react"; import Button from "../../pageElements/Button"; import Form from "react-bootstrap/Form"; import Col from "react-bootstrap/Col"; import Row from "react-bootstrap/Row"; import TextInput from "../../pageElements/TextInput"; import Modal from "react-bootstrap/Modal"; import { v4 as uuidv4 } from "uuid"; import { collection, setDoc, updateDoc, doc } from "firebase/firestore"; import { AppContext } from "../../Hooks/useContext/appContext.js"; import { db } from "../../firebase"; import { objectMap } from "../../Utils/Object"; import { createCaseFields as fields } from "../../Constants/Fields/CreateCaseFields.js"; import { floridaCourts, michiganCourts, newYorkCounties, } from "../../Constants/Fields/CreateCaseFields.js"; import "../../styles/modals.scss"; import { getFormDataDefaults, getValidatedFormData, handleFormDataChange, isFormDataHasErrors, } from "../../Utils/Form"; import "../../styles/modals.scss"; import { useNavigate } from "react-router-dom"; const CreateModal = ({ setShowModal, caseData }) => { const { appState } = useContext(AppContext); const navigate = useNavigate(); const { group } = appState; const appUserId = group.appUserId; const editCaseId = caseData?.id; const isEditing = typeof editCaseId !== "undefined"; const [isBusy, setIsBusy] = useState(false); const [venueArray, setVenueArray] = useState(); const [newCaseId, setNewCaseId] = useState(); const state = group?.state[0].code ? group?.state[0].code : null; const caseNumCopy = state === "ny" ? "Index Number" : "Case Number"; const [data, setData] = useState( getFormDataDefaults(fields, isEditing ? caseData : undefined) ); console.log("state in create modal", state); const courtsList = state === "mi" ? michiganCourts : floridaCourts; function selectVenueValues(data) { const result = courtsList.filter((court) => { let val; const target = data?.jurisdiction?.value?.split(" ")[0]; if (court?.circuit === target) { return court?.counties; } }); const count = result[0]?.counties; return count; } const handleChangeInput = (e, name) => { let venArr; const newData = handleFormDataChange(e, name, data, fields); if (state === "fl") { venArr = selectVenueValues(newData); } setVenueArray(venArr); if (newData !== null) { setData(newData); } }; const validateData = () => { const newData = getValidatedFormData(data, fields); const hasErrors = isFormDataHasErrors(newData); setData(newData); return hasErrors ? null : objectMap(({ value }) => value, newData); }; async function saveCaseData(dataValues) { if (isBusy) { return; } setIsBusy(true); if (isEditing) { try { await updateDoc(doc(db, "cases", editCaseId), dataValues); setShowModal(false); } catch (err) { console.log("Error updating case:", err); } } else { const caseId = uuidv4(); const ownerId = appUserId; // userId; const caseData = { ownerId, caseId, ...dataValues, }; try { const casesRef = collection(db, "cases"); await setDoc(doc(casesRef, `${caseId}`), caseData); setShowModal(false); return caseId; } catch (err) { console.log("Error creating case:", err); } } setIsBusy(false); } const stateOfCase = "NY"; const handleClose = () => { if (!isBusy) { setShowModal(false); } }; const handleCreateCase = (e) => { e.preventDefault(); const dataValues = validateData(); let caseId; if (dataValues === null) { return; } else { try { saveCaseData(dataValues).then((res) => { const caseId = res; navigate(`/casetype/${caseId}`); }); } catch (err) { console.log(err); } } }; const modalInputForm = ( <>
Please enter case information carefully. It will be used later when generating new documents.
> ); return (