diff --git a/src/Components/Case/CaseTypePage.js b/src/Components/Case/CaseTypePage.js
index 308680c..9a49bcd 100644
--- a/src/Components/Case/CaseTypePage.js
+++ b/src/Components/Case/CaseTypePage.js
@@ -17,13 +17,18 @@ const CaseTypePage = () => {
const { group } = appState;
const appUserId = group ? group.appUserId : null;
const [subCase, setSubCase] = useState();
- const [email, setEmail] = useState("");
+ const [contactEmail, setContactEmail] = useState("");
const [contactName, setContactName] = useState("");
const [billingCode, setBillingCode] = useState("");
const [leadAttorney, setLeadAttorney] = useState("");
- const [radioValue, setRadioValue] = useState();
+ const [radioValue, setRadioValue] = useState("");
const [selectedCaseTags, setSelectedCaseTags] = useState([]);
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();
function getCase() {
@@ -43,10 +48,20 @@ const CaseTypePage = () => {
useEffect(getCase, [caseId, appUserId]);
const setSelectedTag = (item) => {
- console.log("item in setSelectedTag ---------------------->", item);
- const temp = [...selectedCaseTags, item.tagName];
- setSelectedCaseTags(temp);
- console.log("selectedCaseTags", selectedCaseTags);
+ if (selectedCaseTags.length < 5) {
+ const temp = [...selectedCaseTags, item.tagName];
+ setSelectedCaseTags(temp);
+ }
+ };
+
+ const handleTagClick = (arg) => {
+ const temp = selectedCaseTags;
+ const foo = temp.filter((tag) => {
+ if (tag != arg) {
+ return tag;
+ }
+ });
+ setSelectedCaseTags(foo);
};
const radioOptions = [
@@ -55,30 +70,78 @@ const CaseTypePage = () => {
];
const handleSetRadioValue = (e) => {
- console.log("e", e);
setRadioValue(e.value);
};
- const handleSave = () => {
- console.log("handleSave");
+ const validateEmail = (email) => {
+ 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() {
if (isBusy) {
return;
}
- const dataValues = {
- leadAttorney: leadAttorney,
- };
- setIsBusy(true);
- try {
- await updateDoc(doc(db, "cases", caseId), dataValues);
- } catch (err) {
- console.log("Error updating case:", err);
+ const valid = validateInput();
+
+ if (valid) {
+ const recordTags = [];
+ selectedCaseTags.forEach((tag) => {
+ parsedTags.forEach((item) => {
+ if (item.tagName.toLowerCase() === tag.toLowerCase()) {
+ recordTags.push(item);
+ }
+ });
+ });
+
+ const dataValues = {
+ leadAttorney: leadAttorney,
+ contactEmail: contactEmail,
+ contactName: contactName,
+ clientPosition: radioValue,
+ caseTags: recordTags,
+ };
+ setIsBusy(true);
+ try {
+ await updateDoc(doc(db, "cases", caseId), dataValues);
+ setIsBusy(false);
+ navigate(`/casedetails/${caseId}`);
+ } catch (err) {
+ console.log("Error updating case:", err);
+ setIsBusy(false);
+ navigate(`/dashboard`);
+ }
}
-
- setIsBusy(false);
}
return (
@@ -100,6 +163,13 @@ const CaseTypePage = () => {
value={leadAttorney}
onChange={(e) => setLeadAttorney(e.target.value)}
>
+
+ {leadAttorneyError ? (
+
{leadAttorneyError}
+ ) : (
+ <>>
+ )}
+
{
className="form-control"
id="emailInput"
placeholder="Contact Email"
- value={email}
- onChange={(e) => setEmail(e.target.value)}
+ value={contactEmail}
+ onChange={(e) => setContactEmail(e.target.value)}
>
+ {contactEmailError ? (
+
{contactEmailError}
+ ) : (
+ <>>
+ )}
@@ -143,7 +218,7 @@ const CaseTypePage = () => {
options={parsedTags}
minLength={1}
ref={typeaheadRef}
- placeholder="Case Type - start typing to search"
+ placeholder="Case Type - type to search, tab/click to select"
onChange={(selected) => {
let item = null;
for (const currentItem of selected) {
@@ -153,12 +228,20 @@ const CaseTypePage = () => {
typeaheadRef.current.clear();
}}
/>
+ {caseTypeError ? (
+
{caseTypeError}
+ ) : (
+ <>>
+ )}
{selectedCaseTags.map((tag, i) => (
-
-
x
+
handleTagClick(tag)}
+ >
+
x
{tag}
@@ -175,9 +258,15 @@ const CaseTypePage = () => {
onClick={(e) => handleSetRadioValue(e, "clientPosition")}
/>
+ {clientPositionError ? (
+
{clientPositionError}
+ ) : (
+ <>>
+ )}
-
+
+