diff --git a/src/Components/Case/CaseDetailsPage.js b/src/Components/Case/CaseDetailsPage.js index 0487d5f..6c37722 100644 --- a/src/Components/Case/CaseDetailsPage.js +++ b/src/Components/Case/CaseDetailsPage.js @@ -149,7 +149,7 @@ const CaseDetailsPage = () => { if (!group) { return null; } - + console.log("-----------------------------------------subCase", subCase); const HeadingContent = () => { return (
diff --git a/src/Components/Document/ReqEditPage.js b/src/Components/Document/ReqEditPage.js index ff1464d..4ddb587 100644 --- a/src/Components/Document/ReqEditPage.js +++ b/src/Components/Document/ReqEditPage.js @@ -4,6 +4,10 @@ import { useParams } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom"; import { AppContext } from "../../Hooks/useContext/appContext"; import EditElement from "../../pageElements/EditElement"; +import LoadingSpinner from "../../pageElements/LoadingSpinner"; +import { docEditCopy } from "../../Constants/Copy/docEditCopy.js"; +import ConfirmModal from "../Modals/ConfirmModal"; +import Button from "../../pageElements/Button"; import { db } from "../../firebase"; import { collection, @@ -21,8 +25,7 @@ const RequestEditPage = () => { const { appState } = useContext(AppContext); const { group } = appState; const navigate = useNavigate(); - const [parsedRogs, setParsedRogs] = useState(); - const [responses, setResponses] = useState([1]); + const [requests, setRequests] = useState([1]); const [fetchedCase, setFetchedCase] = useState(); const [showInputEle, setShowInputEle] = useState(true); const [document, setDocument] = useState(null); @@ -34,7 +37,7 @@ const RequestEditPage = () => { const [isReport, setIsReport] = useState(false); const [issueText, setIssueText] = useState(""); const [showErrorModal, setShowErrorModal] = useState(false); - + const [isBusy, setIsBusy] = useState(false); const state = group.state[0] ? group.state[0].code : "ny"; const lawFirm = group ? group?.firm : null; const streetAdd = group ? group?.streetAddress : null; @@ -85,14 +88,12 @@ const RequestEditPage = () => { } getOutgoingRequests(documentId) .then((data) => { - console.log("data in getOutgoingRequests", data); - /* - const resp = data[0].responses.map((item, index) => { + console.log("data in useEffect", data); + const resp = data[0].requests.map((item, index) => { // NEVER CHANGE THIS: - return { showInputEle: false, resp: item.text, index: index }; + return { showInputEle: false, text: item.text, index: index }; }); - */ - setResponses(); + setRequests(resp); }) .catch((err) => console.log(err)); }, [documentId]); @@ -126,6 +127,50 @@ const RequestEditPage = () => { return req; } + async function getDocx() { + const docId = documentId; + const reqType = documentType; + fetch(`${apiUrl}/getDocx/${docId}/${reqType}`, { + method: "GET", + }).then((response) => { + response.blob().then((blob) => { + let url = window.URL.createObjectURL(blob); + let a = window.document.createElement("a"); + a.href = url; + a.download = `${reqType}-repsonse.docx`; + a.click(); + }); + }); + } + + async function cleanUpDocx() { + const docId = documentId; + const reqType = documentType; + fetch(`${apiUrl}/cleanUpDocx/${docId}/${reqType}`, { + method: "GET", + }) + .then((response) => { + setIsBusy(false); + }) + .catch((err) => { + console.log(err); + }); + } + + async function createAndReturnDocx() { + window.scrollTo({ top: 0 }); + setIsBusy(true); + const response = await handleCreateDocx(); + if (response.status === 200) { + setTimeout(getDocx, 5000); + setTimeout(cleanUpDocx, 10000); + } else { + setShowErrorModal(true); + } + } + + const postEditedrequests = () => {}; + const onScrollClick = () => { const bottom = window.document.scrollingElement.scrollHeight; const place = window.scrollY; @@ -136,11 +181,238 @@ const RequestEditPage = () => { } }; - return ( -
-
{headerPicker(state, fetchedCase, onScrollClick)}
+ async function handleCreateDocx() { + // TODO: compare to see if any changes made before gen, save those + const docId = documentId; + const leadAttorneys = fetchedCase?.leadAttorneys + ? fetchedCase?.leadAttorneys + : null; + const reqType = documentType; + const captionOne = fetchedCase.caption; + const captionTwo = fetchedCase.captionTwo; + const caseNum = fetchedCase.caseNumber; + const plaintiffs = fetchedCase.plaintiffParties; + const defendants = fetchedCase.defendantParties; + const venued = fetchedCase.venue; + const juris = fetchedCase.jurisdiction; + const judge = fetchedCase.judge; + const clientPosition = fetchedCase?.clientPosition + ? fetchedCase?.clientPosition + : null; + + try { + const response = await fetch(`${apiUrl}/genDocx/${docId}/${reqType}`, { + method: "POST", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + }, + body: JSON.stringify({ + caseCaption1: captionOne, + caseCaption2: captionTwo, + caseNumber: caseNum, + clientPosition: clientPosition, + defendant: defendants, + firm: lawFirm, + firmCity: city, + firmState: usState.code, + firmStreetAddress: streetAdd, + firmZip: zipCode, + judge: judge, + jurisdiction: juris, + leadAttorneys: leadAttorneys, + plaintiff: plaintiffs, + state: state, + tel: telephone, + venue: venued, + }), + }); + return response; + } catch (error) { + console.error("Error sending requests to the server:", error); + } + } + + const handleBlur = (e, i) => { + const newSelectedrequests = requests?.map((r) => { + if (r.index === i) { + return { + ...r, + showInputEle: !showInputEle, + }; + } + return r; + }); + setRequests(newSelectedrequests); + }; + + const handleFocus = (arg, i) => { + const newSelectedrequests = requests?.map((r) => { + if (r.index === i) { + return { + ...r, + showInputEle: !showInputEle, + }; + } + return r; + }); + setRequests(newSelectedrequests); + }; + + const handleEditValue = (e, i) => { + const editingRes = requests?.map((r) => { + if (r.index === i) { + return { + ...r, + resp: e.target.value, + }; + } + return r; + }); + setRequests(editingRes); + }; + + const handleBack = () => { + navigate(`/documents`); + }; + + const handleCancelSave = () => { + setShowSaveModal(false); + }; + + const handleSave = () => { + postEditedrequests(); + setShowSaveModal(false); + }; + + const handleReport = () => { + setShowSaveModal(false); + setIsReport(false); + }; + + const handleConfirmSave = () => { + setShowSaveModal(true); + }; + + const handleConfirmReport = () => { + setShowSaveModal(true); + setIsReport(true); + }; + + const numberingContent = (i) => { + let numText; + if (documentType === "interrogatories") { + numText = "INTERROGATORY NO.."; + } else if (documentType === "admissions") { + numText = "REQUEST FOR ADMISSION NO."; + } else if (documentType === "production") { + numText = "REQUEST FOR PRODUCTION NO."; + } else { + numText = "REQUEST NO."; + } + return
{`${numText}${i + 1} `}
; + }; + + const respondent = + fetchedCase?.clientPosition == "Defendant" + ? fetchedCase?.defendantParties + : fetchedCase?.plaintiffParties; + + const displayCopy = + state === "ny" + ? docEditCopy.NewYork + : state === "nj" + ? docEditCopy.NewJersey + : docEditCopy.NewYork; + + const servingParty = + fetchedCase?.clientPosition === "Defendant" + ? fetchedCase?.plaintiffParties + : fetchedCase?.defendantParties; + console.log("requests", requests); + + const editingContent = () => { + return ( + <> +
{headerPicker()}
+
+
{headerString}
+ {/*displayCopy.prelimaryStatement*/} +
+ {requests?.map((req, i) => ( +
+
{req?.text}
+
+ ))} +
handleConfirmReport()} + > +
Report an issue
+
+
+
+ + ); + }; + + //const readyToEdit = fetchedCase && requests.length > 1; + const readyToEdit = true; + const messages = [ + "Generating responses. Please be patient, this may take several minutes.", + ]; + + return isLoading ? ( + + ) : isBusy ? ( + + ) : readyToEdit ? ( + editingContent() + ) : ( +
+
+

Content for this document cannot be displayed at this time.

+

Support has been notified and will respond within 24 hours.

+ Return to Dashboard +
); }; export default RequestEditPage; + +/* + +
+ {displayCopy.prelimaryStatement( + documentType, + respondent, + servingParty + )} +
+ + + console.log("reqwuests in useEffect", requests); + +{headerPicker(state, fetchedCase, onScrollClick)} + + 2 + ? // NEVER CHANGE THIS + requests[i].resp + : null + } + setShowInputEle={setShowInputEle} + showInputEle={ + requests && requests.length > 2 + ? requests[i].showInputEle + : null + } + handleFocus={handleFocus} + handleEditValue={handleEditValue} + handleBlur={handleBlur} + i={i} + /> + +*/ diff --git a/src/Components/Modals/UploadModal.js b/src/Components/Modals/UploadModal.js index dc55f97..9ffb777 100644 --- a/src/Components/Modals/UploadModal.js +++ b/src/Components/Modals/UploadModal.js @@ -39,6 +39,7 @@ const UploadModal = (props) => { const [docError, setShowDocError] = useState(""); const fileTypes = ["PDF"]; const fileName = fileToParse ? fileToParse.name : undefined; + let docType; const apiUrl = process.env.NODE_ENV === "development" @@ -100,10 +101,9 @@ const UploadModal = (props) => { body: file, }); const res = response; - console.log("-------------------------------->res in uploadFile", res); return res; } else { - const response = await fetch(`${apiUrl}/parseNewDoc`, { + const response = await fetch(`${apiUrl}/v1/parse-new-req-doc`, { method: "POST", body: file, });