From e6af1aa0576a85dfdefc06ff9d64e5ad9975c84c Mon Sep 17 00:00:00 2001 From: Kenneth Jannette Date: Sun, 10 Mar 2024 19:59:27 -0500 Subject: [PATCH 1/3] more --- src/Components/Document/DocEditPage.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Components/Document/DocEditPage.js b/src/Components/Document/DocEditPage.js index f0d299b..fddda76 100644 --- a/src/Components/Document/DocEditPage.js +++ b/src/Components/Document/DocEditPage.js @@ -24,6 +24,16 @@ import "../../styles/docedit-page.scss"; const DocEditPage = () => { const { documentId, responseGenerations, caseId, documentType } = useParams(); + console.log("params in docEdit:"); + console.log("-----------------------------"); + console.log("documentId", documentId); + console.log("-----------------------------"); + console.log("responseGenerations", responseGenerations); + console.log("-----------------------------"); + console.log("caseId", caseId); + console.log("-----------------------------"); + console.log("documentType", documentType); + console.log("-----------------------------"); const navigate = useNavigate(); const [parsedRogs, setParsedRogs] = useState(); const [responses, setResponses] = useState([1]); @@ -147,7 +157,7 @@ const DocEditPage = () => { * GET parsed requests. * GET completions if already generated */ - + /* useEffect(() => { if (!documentId || !documentType) { return; @@ -166,7 +176,7 @@ const DocEditPage = () => { .catch((err) => console.log(err)); } }, [documentId]); - +*/ /* * If response completions = 0, generate responses */ From 68fc2e966504cf9f9c92f1dfc61dea88913343de Mon Sep 17 00:00:00 2001 From: Kenneth Jannette Date: Sun, 10 Mar 2024 20:36:53 -0500 Subject: [PATCH 2/3] more --- src/App.js | 2 +- src/Components/Case/CaseDetailsPage.js | 3 +- src/Components/Document/DocEditPage.js | 727 ++----------------------- 3 files changed, 45 insertions(+), 687 deletions(-) diff --git a/src/App.js b/src/App.js index aef5426..63997d3 100644 --- a/src/App.js +++ b/src/App.js @@ -137,7 +137,7 @@ function App() { /> diff --git a/src/Components/Case/CaseDetailsPage.js b/src/Components/Case/CaseDetailsPage.js index 3f0a799..d24c05a 100644 --- a/src/Components/Case/CaseDetailsPage.js +++ b/src/Components/Case/CaseDetailsPage.js @@ -134,8 +134,7 @@ const CaseDetailsPage = () => { const handleNavigate = (docId, caseId) => { console.log("handle navigate fired docId", docId); - const responseGenerations = 1; - navigate(`/docedit/${docId}/${responseGenerations}/${caseId}`); + navigate(`/docedit/${docId}/${caseId}`); }; const handleNavEdit = (documentId, caseId) => { diff --git a/src/Components/Document/DocEditPage.js b/src/Components/Document/DocEditPage.js index fddda76..c020bac 100644 --- a/src/Components/Document/DocEditPage.js +++ b/src/Components/Document/DocEditPage.js @@ -22,189 +22,56 @@ import LoadingSpinner from "../../pageElements/LoadingSpinner"; import { docEditCopy } from "../../Constants/Copy/docEditCopy.js"; import "../../styles/docedit-page.scss"; -const DocEditPage = () => { - const { documentId, responseGenerations, caseId, documentType } = useParams(); - console.log("params in docEdit:"); - console.log("-----------------------------"); - console.log("documentId", documentId); - console.log("-----------------------------"); - console.log("responseGenerations", responseGenerations); - console.log("-----------------------------"); - console.log("caseId", caseId); - console.log("-----------------------------"); - console.log("documentType", documentType); - console.log("-----------------------------"); - const navigate = useNavigate(); - const [parsedRogs, setParsedRogs] = useState(); - const [responses, setResponses] = useState([1]); +const DocEditPage = (props) => { + const { documentId, caseId } = useParams(); + const [document, setDocument] = useState(); + const [docType, setDocType] = useState(); const [fetchedCase, setFetchedCase] = useState(); - const [showInputEle, setShowInputEle] = useState(true); - const [document, setDocument] = useState(null); + const [parsedRogs, setParsedRogs] = useState(); const { appState } = useContext(AppContext); const { group } = appState; const appUserId = group ? group.appUserId : null; - const [docId, setDocId] = useState(documentId); - const [saveDocumentId, setSaveDocumentId] = useState(""); - const [showSaveModal, setShowSaveModal] = useState(false); - const [isLoading, setIsLoading] = useState(false); - const [isReport, setIsReport] = useState(false); - const [issueText, setIssueText] = useState(""); - const [showErrorModal, setShowErrorModal] = useState(false); - const [responsesCreated, setResponsesCreated] = useState( - parseInt(responseGenerations) - ); - const [index, setIndex] = useState(0); - const [isBusy, setIsBusy] = useState(false); - const fbUserId = group ? group.fbAuthUid : null; - // For document generation: - const state = group?.state[0] ? group.state[0].code : "ny"; - const lawFirm = group ? group?.firm : null; - const streetAdd = group ? group?.streetAddress : null; - const city = group ? group?.city : null; - const usState = group?.state[0] ? group?.state[0].code : "ny"; - const zipCode = group ? group?.zipCode : null; - const telephone = group ? group?.telephone : null; const apiUrl = process.env.NODE_ENV === "development" ? process.env.REACT_APP_API_DEV : process.env.REACT_APP_API_PROD; - const displayCopy = - state === "ny" - ? docEditCopy.NewYork - : state === "nj" - ? docEditCopy.NewJersey - : docEditCopy.NewYork; - - const headerPicker = () => { - switch (state) { - case "ny": - return ( - - ); - case "nj": - return ( - - ); - case "fl": - return ( - - ); - default: - return ( - - ); - } - }; - - const headerString = - documentType === "interrogatories" ? ( - "Response to Interrogatories" - ) : documentType === "admissions" ? ( - "Response to Request for Admissions" - ) : documentType === "production" ? ( - "Response to Request for Production" - ) : documentType === "combined-numbered" ? ( - "Response to Interrogatories and Request for Production" - ) : ( - <> - ); - - const servingParty = - fetchedCase?.clientPosition === "Defendant" - ? fetchedCase?.plaintiffParties - : fetchedCase?.defendantParties; - - const messages = [ - "Generating responses. Please be patient, this may take several minutes.", - ]; - - /* - * GET docuement data from Firebase - * */ - useEffect(() => { - if (!appUserId || !docId) { - setDocument(null); + if (!documentId) { return; } - try { - getCase(caseId); - getDocument(); - } catch (err) { - console.log("Error:", err); - } - }, [appUserId, docId, caseId]); - - /* - * GET parsed requests. - * GET completions if already generated - */ - /* - useEffect(() => { - if (!documentId || !documentType) { - return; - } - // TODO: possible *BUG* sometimes sends network req to gen repsonses after first (maybe state is not updating?) - getParsedRequests(documentId, documentType); - if (responsesCreated > 0) { - getCompletions(documentId) - .then((data) => { - const resp = data[0].responses.map((item, index) => { - // NEVER CHANGE THIS: - return { showInputEle: false, resp: item.text, index: index }; - }); - setResponses(resp); - }) - .catch((err) => console.log(err)); - } + getDocument(documentId); + console.log("eff doc", document); + setDocType(document?.docType); }, [documentId]); -*/ - /* - * If response completions = 0, generate responses - */ useEffect(() => { - if (responsesCreated > 0) { + if (!caseId) { return; } - if (responsesCreated < 1) { - if (documentType == "combined-numbered") { - try { - const res = generateResponsesCombined(documentId); - } catch (err) { - console.log(err); - } - } else { - try { - const res = generateResponses(documentId); - } catch (err) { - console.log(err); - } - } - } - }, [responsesCreated, documentId]); + getCase(caseId); + }, [caseId]); - async function getCase(parentCaseId) { + useEffect(() => { + getParsedRequests(documentId, docType); + }, [documentId, docType]); + + function getDocument(docId) { + const docRef = doc(db, "documents", `${docId}`); + const unsub = onSnapshot(docRef, (snapshot) => { + if (snapshot.exists() && snapshot.data().ownerId === appUserId) { + setDocument({ ...snapshot.data(), documentId: snapshot.id }); + } else { + setDocument(null); + } + }); + return unsub; + } + + async function getCase(caseId) { try { - const docRef = doc(db, "cases", `${parentCaseId}`); + const docRef = doc(db, "cases", `${caseId}`); const docSnap = await getDoc(docRef); if (docSnap.exists()) { const _case = docSnap.data(); @@ -219,537 +86,29 @@ const DocEditPage = () => { } } - function getDocument() { - const docRef = doc(db, "documents", `${docId}`); - const unsub = onSnapshot(docRef, (snapshot) => { - if (snapshot.exists() && snapshot.data().ownerId === appUserId) { - setDocument({ ...snapshot.data(), documentId: snapshot.id }); - } else { - setDocument(null); - } - }); - return unsub; - } - - async function getParsedRequests(documentId) { - if (documentId) { - const docType = String(documentType); - try { - const response = await fetch( - `${apiUrl}/getParsedRequests/${documentId}/${docType}`, - { - method: "GET", - } - ); - const res = await response.json(); - - const req = res[0].requests; - if (req.length > 1) { - setParsedRogs(req); - } - } catch (err) { - console.log("Error occured:", err); - } - } - } - - async function getCompletions(docId) { - const docType = String(documentType); - const response = await fetch(`${apiUrl}/completions/${docId}/${docType}`, { - method: "GET", - }); - const req = await response.json(); - return req; - } - - async function generateResponsesCombined(documentId) { - if (responsesCreated > 0) { - return; - } - const docType = String(documentType); - let mode; - //TODO: remove isRequests var if not goign to use - const isRequests = false; - console.log( - "generateResponsesCombined docmentId docType", - documentId, - docType - ); - try { - setIsLoading(true); - fetch( - `${apiUrl}/genResponseFromArrayCombined/${documentId}/${docType}/${isRequests}`, - { - method: "GET", - } - ) - .then(function (response) { - return response.json(); - }) - .then((data) => { - console.log("data in genResponseFromArrayCombined", data); - const respArray = data[0].responses; - const result = respArray?.map((item, index) => { - let obj = {}; - obj["showInputEle"] = false; - obj["resp"] = item.text; - obj["index"] = index; - return obj; - }); - setResponses(result); - updateRespGenerationCount(documentId); - updateUserAccountDocsGenerated(fbUserId); - setIsLoading(false); - }) - .catch((err) => console.log(err)); - } catch (err) { - console.log("err", err); - } - } - - async function generateResponses(documentId) { - if (responsesCreated > 0) { - return; - } - const docType = String(documentType); - let mode; - //TODO: remove isRequests var - const isRequests = false; - - try { - setIsLoading(true); - fetch( - `${apiUrl}/genResponseFromArray/${documentId}/${docType}/${isRequests}`, - { - method: "GET", - } - ) - .then(function (response) { - return response.json(); - }) - .then((data) => { - console.log("data in genResponseFromArray ", data); - const respArray = data[0].responses; - const result = respArray?.map((item, index) => { - let obj = {}; - obj["showInputEle"] = false; - obj["resp"] = item.text; - obj["index"] = index; - return obj; - }); - setResponses(result); - updateRespGenerationCount(documentId); - setIsLoading(false); - }) - .catch((err) => console.log(err)); - } catch (err) { - console.log("err", err); - } - } - - async function postEditedResponses() { - let obj = {}; - obj["type"] = documentType; - obj["id"] = docId; - obj["requests"] = responses; - const data = JSON.stringify(obj); - try { - const response = await fetch(`${apiUrl}/v1/store-edited-completions`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - json: true, - body: data, - }); - const res = response; - return res; - } catch (error) { - console.error("Error sending responses to the server:", error); - } - } - - async function createAndReturnDocx() { - setIsBusy(true); - const response = await handleCreateDocx(); - if (response.status === 200) { - setTimeout(getDocx, 5000); - setTimeout(cleanUpDocx, 10000); - } else { - setShowErrorModal(true); - } - setIsBusy(false); - } - - async function cleanUpDocx() { - const docId = documentId; - const reqType = documentType; - fetch(`${apiUrl}/cleanUpDocx/${docId}/${reqType}`, { - method: "GET", - }) - .then((response) => { - console.log(response); - }) - .catch((err) => { - console.log(err); - }); - } - - 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 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 responses to the server:", error); - } - } - - async function updateUserAccountDocsGenerated(fbUserId) { - await updateDoc(doc(db, "users", fbUserId), { - docsGenerated: increment(1), - }); - } - - async function updateRespGenerationCount(docId) { + async function getParsedRequests(docId, docType) { if (!docId) { return; } - await updateDoc(doc(db, "documents", docId), { - responseGenerations: increment(1), - }); - setResponsesCreated((responsesCreated) => responsesCreated + 1); - } - - function saveDocument(documentId) { - setSaveDocumentId(documentId); - setShowSaveModal(!showSaveModal); - } - - async function postEditedResponses() { - let obj = {}; - - obj["type"] = "INTERROGATORY"; - obj["id"] = docId; - obj["requests"] = responses; - const data = JSON.stringify(obj); try { - const response = await fetch(`${apiUrl}/storeeditedcompletions`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - json: true, - body: data, - }); - const res = response; - return res; - } catch (error) { - console.error("Error sending responses to the server:", error); - } - } + const response = await fetch( + `${apiUrl}/getParsedRequests/${documentId}/${docType}`, + { + method: "GET", + } + ); + const res = await response.json(); - const handleBlur = (e, i) => { - const newSelectedResponses = responses?.map((r) => { - if (r.index === i) { - return { - ...r, - showInputEle: !showInputEle, - }; + const req = res[0].requests; + if (req.length > 1) { + setParsedRogs(req); } - return r; - }); - setResponses(newSelectedResponses); - }; - - const handleFocus = (arg, i) => { - const newSelectedResponses = responses?.map((r) => { - if (r.index === i) { - return { - ...r, - showInputEle: !showInputEle, - }; - } - return r; - }); - setResponses(newSelectedResponses); - }; - - const handleEditValue = (e, i) => { - const editingRes = responses?.map((r) => { - if (r.index === i) { - return { - ...r, - resp: e.target.value, - }; - } - return r; - }); - setResponses(editingRes); - }; - - const handleBack = () => { - navigate(`/documents`); - }; - - const handleCancelSave = () => { - setShowSaveModal(false); - }; - - const handleSave = () => { - postEditedResponses(); - setShowSaveModal(false); - }; - - const handleConfirmSave = () => { - setShowSaveModal(true); - }; - - const handleReport = () => { - setShowSaveModal(false); - setIsReport(false); - }; - - const handleConfirmReport = () => { - setShowSaveModal(true); - setIsReport(true); - }; - - async function reportDoc() { - const data = { - documentId: documentId, - caseId: caseId, - appUserId: appUserId, - issueDescription: issueText, - }; - try { - const reportRef = collection(db, "supportrequests"); - await setDoc(doc(reportRef, documentId), data); } catch (err) { - console.log("Error saving case to db:", err); + console.log("Error occured:", err); } } - const onScrollClick = () => { - const bottom = window.document.scrollingElement.scrollHeight; - const place = window.scrollY; - if (place > bottom / 2) { - window.scrollTo({ top: 0, behavior: "smooth" }); - } else if (place < bottom / 2) { - window.scrollTo({ top: bottom, behavior: "smooth" }); - } - }; - - 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; - console.log("responses", responses); - console.log("parsedRogs", parsedRogs); - const editingContent = () => { - return ( - <> -
{headerPicker()}
-
-
{headerString}
-
- {displayCopy.prelimaryStatement( - documentType, - respondent, - servingParty - )} -
-
- {parsedRogs?.map((rog, i) => ( -
-
- {numberingContent(i)} - {rog?.text} -
-
- 2 - ? // NEVER CHANGE THIS - responses[i].resp - : null - } - setShowInputEle={setShowInputEle} - showInputEle={ - responses && responses.length > 2 - ? responses[i].showInputEle - : null - } - handleFocus={handleFocus} - handleEditValue={handleEditValue} - handleBlur={handleBlur} - i={i} - /> -
-
- ))} -
handleConfirmReport()} - > -
Report an issue
-
-
-
- {/* TODO: add tooltip: "This will save the document and create a .docx file that will (be downloaded? saved somewhere?" */} -
-
-
-
-
-
-
-
-
-
- {showSaveModal && !isReport && documentId !== null ? ( - - ) : null} - {showSaveModal && isReport && documentId !== null ? ( - - ) : null} - {showErrorModal ? ( - setShowErrorModal(false)} - onConfirm={() => setShowErrorModal(false)} - buttonLabelText="Confirm" - modalText={ - "There was a problem. Support was notified and will respond within 24 hours." - } - /> - ) : null} - - ); - }; - - const readyToEdit = fetchedCase && responses.length > 1; - - return isLoading ? ( - - ) : isBusy ? ( - - ) : readyToEdit ? ( - editingContent() - ) : ( -
-
-

- {" "} - Response content for this document cannot be displayed at this time. -

-

Support has been notified and will respond within 24 hours.

- Return to Dashboard -
-
- ); + return
Doc Edit
; }; export default DocEditPage; From bef172636d955346151a1126d30b21b7772644f4 Mon Sep 17 00:00:00 2001 From: Kenneth Jannette Date: Sun, 10 Mar 2024 22:23:57 -0500 Subject: [PATCH 3/3] more --- src/Components/Document/DocEditPage.js | 125 +++++++++++++++---------- 1 file changed, 75 insertions(+), 50 deletions(-) diff --git a/src/Components/Document/DocEditPage.js b/src/Components/Document/DocEditPage.js index c020bac..a4a79e9 100644 --- a/src/Components/Document/DocEditPage.js +++ b/src/Components/Document/DocEditPage.js @@ -24,10 +24,11 @@ import "../../styles/docedit-page.scss"; const DocEditPage = (props) => { const { documentId, caseId } = useParams(); - const [document, setDocument] = useState(); - const [docType, setDocType] = useState(); - const [fetchedCase, setFetchedCase] = useState(); - const [parsedRogs, setParsedRogs] = useState(); + const [document, setDocument] = useState(null); + const [docType, setDocType] = useState(null); + const [fetchedCase, setFetchedCase] = useState(null); + const [parsedRogs, setParsedRogs] = useState(null); + const [docLoaded, setDocLoaded] = useState(false); const { appState } = useContext(AppContext); const { group } = appState; const appUserId = group ? group.appUserId : null; @@ -37,36 +38,43 @@ const DocEditPage = (props) => { ? process.env.REACT_APP_API_DEV : process.env.REACT_APP_API_PROD; - useEffect(() => { - if (!documentId) { - return; - } - getDocument(documentId); - console.log("eff doc", document); - setDocType(document?.docType); - }, [documentId]); - - useEffect(() => { - if (!caseId) { - return; - } - getCase(caseId); - }, [caseId]); - - useEffect(() => { - getParsedRequests(documentId, docType); - }, [documentId, docType]); - - function getDocument(docId) { - const docRef = doc(db, "documents", `${docId}`); - const unsub = onSnapshot(docRef, (snapshot) => { - if (snapshot.exists() && snapshot.data().ownerId === appUserId) { - setDocument({ ...snapshot.data(), documentId: snapshot.id }); - } else { - setDocument(null); + async function getParsedRequests(docId, docType) { + try { + const response = await fetch( + `${apiUrl}/getParsedRequests/${documentId}/${docType}`, + { + method: "GET", + } + ); + const res = await response.json(); + console.log("res", res); + const req = res[0].requests; + if (req.length > 1) { + setParsedRogs(req); } - }); - return unsub; + } catch (err) { + console.log("Error occured GET parsed req:", err); + } + } + + async function getDocument(docId) { + try { + const docRef = doc(db, "documents", `${docId}`); + const docSnap = await getDoc(docRef); + if (docSnap.exists()) { + const bar = docSnap.data(); + if (bar.docType) { + console.log(bar.docType); + let zib = bar.docType; + console.log("zib", zib); + getz(docId, zib); + } + } else { + console.log("DB item does not exist"); + } + } catch (error) { + console.log(`A system error has occurred: ${error}`); + } } async function getCase(caseId) { @@ -76,7 +84,6 @@ const DocEditPage = (props) => { if (docSnap.exists()) { const _case = docSnap.data(); _case.id = docSnap._key.path.segments[1]; - console.log("_case", _case); setFetchedCase(_case); } else { console.log("DB item does not exist"); @@ -86,27 +93,45 @@ const DocEditPage = (props) => { } } - async function getParsedRequests(docId, docType) { - if (!docId) { - return; - } + async function getz(docId, zib) { + console.log("zibbbt", zib); try { - const response = await fetch( - `${apiUrl}/getParsedRequests/${documentId}/${docType}`, - { - method: "GET", - } - ); - const res = await response.json(); - - const req = res[0].requests; - if (req.length > 1) { - setParsedRogs(req); - } + fetch(`${apiUrl}/v1/get-parsed-requests/${documentId}/${zib}`, { + method: "GET", + }) + .then(function (response) { + return response.json(); + }) + .then((data) => { + const respArray = data[0].responses; + const result = respArray?.map((item, index) => { + let obj = {}; + obj["showInputEle"] = false; + obj["resp"] = item.text; + obj["index"] = index; + return obj; + }); + setParsedRogs(result); + console.log("parsedRogs", parsedRogs); + }); } catch (err) { console.log("Error occured:", err); } } + useEffect(() => { + if (!documentId) { + return; + } + getDocument(documentId); + }, [documentId]); + + useEffect(() => { + if (!caseId) { + return; + } + getCase(caseId); + getDocument(documentId); + }, [caseId, documentId]); return
Doc Edit
; };