Merge pull request #67 from kjannette/hag2

Hag2
This commit is contained in:
S Jannette
2024-01-31 20:44:39 -06:00
committed by GitHub
11 changed files with 135 additions and 42 deletions

View File

@@ -17,13 +17,18 @@ const CaseTypePage = () => {
const { group } = appState; const { group } = appState;
const appUserId = group ? group.appUserId : null; const appUserId = group ? group.appUserId : null;
const [subCase, setSubCase] = useState(); const [subCase, setSubCase] = useState();
const [email, setEmail] = useState(""); const [contactEmail, setContactEmail] = useState("");
const [contactName, setContactName] = useState(""); const [contactName, setContactName] = useState("");
const [billingCode, setBillingCode] = useState(""); const [billingCode, setBillingCode] = useState("");
const [leadAttorney, setLeadAttorney] = useState(""); const [leadAttorney, setLeadAttorney] = useState("");
const [radioValue, setRadioValue] = useState(); const [radioValue, setRadioValue] = useState("");
const [selectedCaseTags, setSelectedCaseTags] = useState([]); const [selectedCaseTags, setSelectedCaseTags] = useState([]);
const [isBusy, setIsBusy] = useState(false); const [isBusy, setIsBusy] = useState(false);
const [contactEmailError, setContactEmailError] = useState("");
const [leadAttorneyError, setLeadAttorneyError] = useState("");
const [caseTypeError, setCaseTypeError] = useState(false);
const [clientPositionError, setClientPositionError] = useState();
const typeaheadRef = useRef(); const typeaheadRef = useRef();
function getCase() { function getCase() {
@@ -43,10 +48,20 @@ const CaseTypePage = () => {
useEffect(getCase, [caseId, appUserId]); useEffect(getCase, [caseId, appUserId]);
const setSelectedTag = (item) => { const setSelectedTag = (item) => {
console.log("item in setSelectedTag ---------------------->", item); if (selectedCaseTags.length < 5) {
const temp = [...selectedCaseTags, item.tagName]; const temp = [...selectedCaseTags, item.tagName];
setSelectedCaseTags(temp); setSelectedCaseTags(temp);
console.log("selectedCaseTags", selectedCaseTags); }
};
const handleTagClick = (arg) => {
const temp = selectedCaseTags;
const foo = temp.filter((tag) => {
if (tag != arg) {
return tag;
}
});
setSelectedCaseTags(foo);
}; };
const radioOptions = [ const radioOptions = [
@@ -55,30 +70,78 @@ const CaseTypePage = () => {
]; ];
const handleSetRadioValue = (e) => { const handleSetRadioValue = (e) => {
console.log("e", e);
setRadioValue(e.value); setRadioValue(e.value);
}; };
const handleSave = () => { const validateEmail = (email) => {
console.log("handleSave"); const result = /.+@.+\.[A-Za-z]+$/.test(email);
return result;
};
const validateInput = () => {
const leadAttorneyValid = leadAttorney.length > 2;
const contactEmailValid = validateEmail(contactEmail);
const caseTypeValid = selectedCaseTags.length > 0;
const clientPositionValid =
radioValue === "Defendant" || radioValue === "Plaintiff";
const allValid =
leadAttorneyValid &&
contactEmailValid &&
caseTypeValid &&
clientPositionValid;
if (!leadAttorneyValid) {
setLeadAttorneyError("Field cannot be left blank");
}
if (!contactEmailValid) {
setContactEmailError("Field cannot be left blank");
}
if (!caseTypeValid) {
setCaseTypeError("Field cannot be left blank");
}
if (!clientPositionValid) {
setClientPositionError("You must make a selection");
}
return allValid;
}; };
async function saveCaseData() { async function saveCaseData() {
if (isBusy) { if (isBusy) {
return; return;
} }
const valid = validateInput();
if (valid) {
const recordTags = [];
selectedCaseTags.forEach((tag) => {
parsedTags.forEach((item) => {
if (item.tagName.toLowerCase() === tag.toLowerCase()) {
recordTags.push(item);
}
});
});
const dataValues = { const dataValues = {
leadAttorney: leadAttorney, leadAttorney: leadAttorney,
contactEmail: contactEmail,
contactName: contactName,
clientPosition: radioValue,
caseTags: recordTags,
}; };
setIsBusy(true); setIsBusy(true);
try { try {
await updateDoc(doc(db, "cases", caseId), dataValues); await updateDoc(doc(db, "cases", caseId), dataValues);
setIsBusy(false);
navigate(`/casedetails/${caseId}`);
} catch (err) { } catch (err) {
console.log("Error updating case:", err); console.log("Error updating case:", err);
}
setIsBusy(false); setIsBusy(false);
navigate(`/dashboard`);
}
}
} }
return ( return (
@@ -100,6 +163,13 @@ const CaseTypePage = () => {
value={leadAttorney} value={leadAttorney}
onChange={(e) => setLeadAttorney(e.target.value)} onChange={(e) => setLeadAttorney(e.target.value)}
></input> ></input>
<div>
{leadAttorneyError ? (
<div className="casetype-error">{leadAttorneyError}</div>
) : (
<></>
)}
</div>
</div> </div>
<div className="type-col"> <div className="type-col">
<input <input
@@ -129,9 +199,14 @@ const CaseTypePage = () => {
className="form-control" className="form-control"
id="emailInput" id="emailInput"
placeholder="Contact Email" placeholder="Contact Email"
value={email} value={contactEmail}
onChange={(e) => setEmail(e.target.value)} onChange={(e) => setContactEmail(e.target.value)}
></input> ></input>
{contactEmailError ? (
<div className="casetype-error">{contactEmailError}</div>
) : (
<></>
)}
</div> </div>
</div> </div>
<div className="type-row"> <div className="type-row">
@@ -143,7 +218,7 @@ const CaseTypePage = () => {
options={parsedTags} options={parsedTags}
minLength={1} minLength={1}
ref={typeaheadRef} ref={typeaheadRef}
placeholder="Case Type - start typing to search" placeholder="Case Type - type to search, tab/click to select"
onChange={(selected) => { onChange={(selected) => {
let item = null; let item = null;
for (const currentItem of selected) { for (const currentItem of selected) {
@@ -153,11 +228,19 @@ const CaseTypePage = () => {
typeaheadRef.current.clear(); typeaheadRef.current.clear();
}} }}
/> />
{caseTypeError ? (
<div className="casetype-error">{caseTypeError}</div>
) : (
<></>
)}
<div className="case-tag-container"> <div className="case-tag-container">
{selectedCaseTags.map((tag, i) => ( {selectedCaseTags.map((tag, i) => (
<div className="tag-container"> <div className="tag-container">
<div className="tag-box"> <div className="tag-box">
<div className="tag-ex-box"> <div
className="tag-ex-box"
onClick={() => handleTagClick(tag)}
>
<div className="tag-ex">x</div> <div className="tag-ex">x</div>
</div> </div>
<div className="casetag-name">{tag}</div> <div className="casetag-name">{tag}</div>
@@ -175,9 +258,15 @@ const CaseTypePage = () => {
onClick={(e) => handleSetRadioValue(e, "clientPosition")} onClick={(e) => handleSetRadioValue(e, "clientPosition")}
/> />
</div> </div>
{clientPositionError ? (
<div className="casetype-error">{clientPositionError}</div>
) : (
<></>
)}
</div> </div>
</div> </div>
<div className="caseType-button-container">
<div className="casetype-button-container">
<Button <Button
className="pt-2 pb-2 mr-2 primary-button" className="pt-2 pb-2 mr-2 primary-button"
onClick={saveCaseData} onClick={saveCaseData}

View File

@@ -171,7 +171,7 @@ const DocumentListPage = ({ perPage }) => {
if (!group) { if (!group) {
return null; return null;
} }
console.log("allDocs", allDocs);
const DesktopContent = () => { const DesktopContent = () => {
return ( return (
<> <>

View File

@@ -18,8 +18,6 @@ const ConfirmModal = ({
setIssueText, setIssueText,
reportDoc, reportDoc,
}) => { }) => {
console.log("isReport", isReport);
return ( return (
<Modal show="true" onHide={onCancel} size="lg"> <Modal show="true" onHide={onCancel} size="lg">
<Modal.Header closeButton> <Modal.Header closeButton>

View File

@@ -126,7 +126,7 @@ const UploadModal = (props) => {
try { try {
const response = await processFile(); const response = await processFile();
console.log("response in upload modal", response);
if (response.res?.status !== 200) { if (response.res?.status !== 200) {
saveToDb(response.uuidName); saveToDb(response.uuidName);
return; return;

View File

@@ -3,9 +3,8 @@ import { AuthContext } from "../Context/AuthProvider";
import { Navigate } from "react-router-dom"; import { Navigate } from "react-router-dom";
const PrivateRoute = ({ children }) => { const PrivateRoute = ({ children }) => {
console.log("AuthContext", AuthContext);
const { currentUserEmail } = useContext(AuthContext); const { currentUserEmail } = useContext(AuthContext);
console.log("currentUserEmail", currentUserEmail);
return currentUserEmail === null ? <Navigate to="/" /> : children; return currentUserEmail === null ? <Navigate to="/" /> : children;
}; };

View File

@@ -287,7 +287,6 @@ const SignupPage = () => {
const data = await response.json(); const data = await response.json();
console.log("data in stripe auth call -------------++++++++++++++", data);
//subscriptionId = response.subscriptionId; //subscriptionId = response.subscriptionId;
//customerId = response.customerId; //customerId = response.customerId;
@@ -303,7 +302,6 @@ const SignupPage = () => {
const handleSignup = async (e) => { const handleSignup = async (e) => {
e.preventDefault(); e.preventDefault();
console.log("handleSignup");
const paymentDataValues = validatePaymentData(); const paymentDataValues = validatePaymentData();
if (paymentDataValues === null) { if (paymentDataValues === null) {
@@ -323,7 +321,7 @@ const SignupPage = () => {
paymentDataValues, paymentDataValues,
dataValues dataValues
); );
console.log("----------------------------->>>>>>>>>>>>>>>>>data", data);
const customerId = data.data.customerId; const customerId = data.data.customerId;
const subscriptionId = data.data.subscriptionId; const subscriptionId = data.data.subscriptionId;
@@ -350,7 +348,7 @@ const SignupPage = () => {
} }
} catch (error) { } catch (error) {
setIsBusy(false); setIsBusy(false);
console.log("-------->error", error);
setNotice( setNotice(
error.message || "Sorry, something went wrong. Please try again." error.message || "Sorry, something went wrong. Please try again."
); );

View File

@@ -694,13 +694,13 @@ export const caseTags = [
}, },
{ {
tagId: "cbe77c35-edfb-4dde-8966-b4cc11603647", tagId: "cbe77c35-edfb-4dde-8966-b4cc11603647",
tagName: "family law - custoday", tagName: "family law - custody",
mainType: { mainType: {
name: "family law", name: "family law",
id: "8e591ed5-ca8e-4569-b1a8-c664dcd678c8", id: "8e591ed5-ca8e-4569-b1a8-c664dcd678c8",
}, },
subType: { subType: {
name: "custoday", name: "custody",
subTypeId: "4c3d7038-9e19-4f45-9921-a1c3d49d19b2", subTypeId: "4c3d7038-9e19-4f45-9921-a1c3d49d19b2",
}, },
}, },

View File

@@ -284,7 +284,7 @@ export const DocCard = (props) => {
const pendingText = const pendingText =
"Parsing in process, please be patient. This should resolve within 10 minutes."; "Parsing in process, please be patient. This should resolve within 10 minutes.";
const report = (documentId, docType) => { const report = (documentId, docType) => {
console.log("report documentId, docType", documentId, docType); //console.log("report documentId, docType", documentId, docType);
}; };
return ( return (

View File

@@ -14,7 +14,7 @@ const Radio = (props) => {
details, details,
isAnnual, isAnnual,
} = props; } = props;
console.log("isAnnual in radio", isAnnual);
const classCheckbox = "checkbox"; const classCheckbox = "checkbox";
const classOption = "option"; const classOption = "option";
const index = isAnnual === 1 ? Number("1") : Number("0"); const index = isAnnual === 1 ? Number("1") : Number("0");

View File

@@ -15,7 +15,7 @@ const TextInput = (props) => {
type, type,
disabled, disabled,
} = props; } = props;
console.log("inputClassName", inputClassName);
return ( return (
<div <div
className={ className={

View File

@@ -33,7 +33,6 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: wrap; flex-wrap: wrap;
border: 1px solid red;
padding-top: 8px; padding-top: 8px;
} }
@@ -69,7 +68,9 @@
padding: 0px 8px; padding: 0px 8px;
} }
.caseType-button-container { .casetype-button-container {
margin-top: 20px;
margin-right: 16px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-end; align-items: flex-end;
@@ -82,3 +83,11 @@
border: 1px solid #eaeaea; border: 1px solid #eaeaea;
border-radius: 10px; border-radius: 10px;
} }
.casetype-error {
font-size: 0.84rem;
margin-top: 2px;
margin-left: 2px;
padding-left: 6px;
color: red;
}