more
This commit is contained in:
@@ -1,30 +1,183 @@
|
||||
import { useEffect, useState } from "react";
|
||||
import { collection, setDoc, doc } from "firebase/firestore";
|
||||
import { db } from "../../firebase";
|
||||
import { db, auth } from "../../firebase";
|
||||
import Button from "../../pageElements/Button";
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import arrow from "../../Assets/Images/Arrow.png";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import ConfirmModal from "../Modals/ConfirmModal";
|
||||
import { marchEmailPrm } from "../../secrets";
|
||||
import { createUserWithEmailAndPassword } from "firebase/auth";
|
||||
import { stateDataValues } from "../../Constants/Fields/SignupFields";
|
||||
import "../../styles/homepage.scss";
|
||||
|
||||
const HomePage = () => {
|
||||
const navigate = useNavigate();
|
||||
const [showPromoModal, setShowPromoModal] = useState(false);
|
||||
const issueText = "";
|
||||
const [isBusy, setIsBusy] = useState(false);
|
||||
const [notice, setNotice] = useState("");
|
||||
|
||||
const handleNavigate = () => {
|
||||
navigate("/signup");
|
||||
const apiUrl =
|
||||
process.env.NODE_ENV === "development"
|
||||
? process.env.REACT_APP_API_DEV
|
||||
: process.env.REACT_APP_API_PROD;
|
||||
|
||||
async function saveUserData(
|
||||
authId,
|
||||
dataValues,
|
||||
customerId,
|
||||
subscriptionCreated,
|
||||
subscriptionPeriodStart,
|
||||
subscriptionPeriodEnd,
|
||||
subscriptionId,
|
||||
isPromotionalMebership
|
||||
) {
|
||||
const appUserId = uuidv4();
|
||||
const firmId = uuidv4();
|
||||
const fbAuthUid = authId;
|
||||
//let plan = selectedPlan;
|
||||
let docsAllowedPerMonth;
|
||||
if (isPromotionalMebership === true) {
|
||||
docsAllowedPerMonth = 1;
|
||||
subscriptionId = uuidv4();
|
||||
let plan = "promo plan";
|
||||
} else {
|
||||
//docsAllowedPerMonth = selectedPlan[0].docsAllowedPerMonth;
|
||||
}
|
||||
|
||||
const docsGenerated = 0;
|
||||
|
||||
const {
|
||||
firstName,
|
||||
lastName,
|
||||
firm,
|
||||
telephone,
|
||||
streetAddress,
|
||||
city,
|
||||
state,
|
||||
zipCode,
|
||||
barNumber,
|
||||
practiceArea,
|
||||
email,
|
||||
} = dataValues;
|
||||
|
||||
const userState = stateDataValues.filter((value) => {
|
||||
if (value.name === state) return value;
|
||||
});
|
||||
|
||||
const userData = {
|
||||
docsAllowedPerMonth,
|
||||
docsGenerated,
|
||||
appUserId,
|
||||
fbAuthUid,
|
||||
firmId,
|
||||
firstName,
|
||||
lastName,
|
||||
firm,
|
||||
telephone,
|
||||
streetAddress,
|
||||
city,
|
||||
state: userState,
|
||||
zipCode,
|
||||
barNumber,
|
||||
practiceArea,
|
||||
email,
|
||||
isPromotionalMebership,
|
||||
customerId: customerId,
|
||||
subscriptionId: subscriptionId,
|
||||
//subscriptionPlan: plan,
|
||||
subscriptionCreated: subscriptionCreated,
|
||||
subscriptionPeriodStart: subscriptionPeriodStart,
|
||||
subscriptionPeriodEnd: subscriptionPeriodEnd,
|
||||
};
|
||||
|
||||
try {
|
||||
const usersRef = collection(db, "users");
|
||||
const res = await setDoc(doc(usersRef, fbAuthUid), userData);
|
||||
return res;
|
||||
} catch (error) {
|
||||
console.log(`Error saving new user to db: ${error}`);
|
||||
}
|
||||
}
|
||||
|
||||
async function getFocusData(code) {
|
||||
try {
|
||||
const response = await fetch(`${apiUrl}/v1/get-focused-data/${code}`, {
|
||||
method: "GET",
|
||||
});
|
||||
const res = await response.json();
|
||||
return res;
|
||||
} catch (err) {
|
||||
console.log("Error in get rqst:", err);
|
||||
}
|
||||
}
|
||||
|
||||
async function handleProcessPromoSubscription(code) {
|
||||
console.log("code in handleProcessPromoSubscription", code);
|
||||
setShowPromoModal(false);
|
||||
if (!code) {
|
||||
return;
|
||||
}
|
||||
setIsBusy(true);
|
||||
const userData = await getFocusData(code);
|
||||
if (!userData) {
|
||||
return;
|
||||
} else {
|
||||
handlePromoSignup(userData);
|
||||
}
|
||||
}
|
||||
|
||||
const handlePromoSignup = async (dataValues) => {
|
||||
console.log("dataValues in handlePromoSignup", dataValues);
|
||||
return;
|
||||
if (dataValues) {
|
||||
try {
|
||||
const customerId = `${uuidv4()}-florida-spring-promo`;
|
||||
const today = new Date();
|
||||
const subscriptionCreated = today;
|
||||
const subscriptionPeriodStart = today;
|
||||
console.log(subscriptionPeriodStart);
|
||||
const subscriptionPeriodEnd = today;
|
||||
const subscriptionId = uuidv4();
|
||||
|
||||
const userCredential = await createUserWithEmailAndPassword(
|
||||
auth,
|
||||
dataValues.email,
|
||||
dataValues.password
|
||||
);
|
||||
|
||||
const user = userCredential.user;
|
||||
dataValues = { ...dataValues };
|
||||
|
||||
const isPromotionalMebership = true;
|
||||
const res = await saveUserData(
|
||||
user.uid,
|
||||
dataValues,
|
||||
customerId,
|
||||
subscriptionCreated,
|
||||
subscriptionPeriodStart,
|
||||
subscriptionPeriodEnd,
|
||||
subscriptionId,
|
||||
isPromotionalMebership
|
||||
);
|
||||
setIsBusy(false);
|
||||
navigate("/dashboard");
|
||||
} catch (error) {
|
||||
console.log("Error handling request", error, error.message);
|
||||
setIsBusy(false);
|
||||
setNotice("Sorry, something went wrong. Please try again.");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const handleTryItButton = () => {
|
||||
setShowPromoModal(true);
|
||||
};
|
||||
|
||||
const handleLogin = () => {
|
||||
navigate("/login");
|
||||
};
|
||||
|
||||
const handleConfirmPromoCode = () => {
|
||||
//
|
||||
};
|
||||
|
||||
const handleCancelModal = () => {
|
||||
setShowPromoModal(!showPromoModal);
|
||||
navigate("/signup");
|
||||
@@ -73,7 +226,7 @@ const HomePage = () => {
|
||||
<Button
|
||||
className="primary-button homepage-button"
|
||||
labelText="Try It For Free"
|
||||
onClick={handleNavigate}
|
||||
onClick={handleTryItButton}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -90,7 +243,7 @@ const HomePage = () => {
|
||||
<Button
|
||||
className="primary-button homepage-button"
|
||||
labelText="Try It For Free"
|
||||
onClick={handleNavigate}
|
||||
onClick={handleTryItButton}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -300,8 +453,7 @@ const HomePage = () => {
|
||||
onCancel={handleCancelModal}
|
||||
buttonLabelText="Enter Code"
|
||||
isPromoModal={true}
|
||||
issueText={issueText ? issueText : null}
|
||||
onConfirm={handleConfirmPromoCode}
|
||||
onConfirm={handleProcessPromoSubscription}
|
||||
cancelButtonText="I don't have a code"
|
||||
/>
|
||||
) : (
|
||||
|
||||
Reference in New Issue
Block a user