@@ -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}
|
||||||
|
|||||||
@@ -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 (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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."
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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 (
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const TextInput = (props) => {
|
|||||||
type,
|
type,
|
||||||
disabled,
|
disabled,
|
||||||
} = props;
|
} = props;
|
||||||
console.log("inputClassName", inputClassName);
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={
|
className={
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user