diff --git a/env.txt b/env.txt index d237a17..dc9cb6e 100644 --- a/env.txt +++ b/env.txt @@ -1,2 +1,2 @@ -PUBLIC_API_KEY=1234567890abcdef -PUBLIC_SECRET_KEY=my-secret-key \ No newline at end of file +PUBLIC_BUZZ_ONE_BASE_URL=https://beanstalkedu.in/api/one/v1/ +PUBLIC_BUZZ_BASE_URL=https://beanstalkedu.in/api/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9afb0f1..8df1277 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9864,8 +9864,6 @@ }, "node_modules/npm/node_modules/cross-spawn/node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "inBundle": true, "license": "ISC", "dependencies": { diff --git a/public/blogs-sitemap.xml b/public/blogs-sitemap.xml new file mode 100644 index 0000000..b16207d --- /dev/null +++ b/public/blogs-sitemap.xml @@ -0,0 +1,44 @@ + + +https://akadmyapp.com/blogs/guide-to-preschool-assessment-tools + + +https://akadmyapp.com/blogs/summer-camp-activities-for-preschool + + +https://akadmyapp.com/blogs/first-day-preschool-activities-ideas + + +https://akadmyapp.com/blogs/lesson-plan-for-preschool-a-complete-guide + + +https://akadmyapp.com/blogs/benefits-of-preschool-learning-games-for-early-education + + +https://akadmyapp.com/blogs/preschool-online-learning-games-kits-apps-worksheets + + +https://akadmyapp.com/blogs/seamless-scalability-akadmy-empowering-early-education + + +https://akadmyapp.com/blogs/ai-tools-for-teachers + + +https://akadmyapp.com/blogs/what-should-be-included-in-a-preschool-report-card + + +https://akadmyapp.com/blogs/ideas-of-worksheets-for-preschool + + +https://akadmyapp.com/blogs/power-of-early-learning-why-preschool-education-is-important + + +https://akadmyapp.com/blogs/how-do-classroom-management-tools-help-educators + + +https://akadmyapp.com/blogs/anecdotal-record-a-guide-for-early-childhood-educators + + +https://akadmyapp.com/blogs/preschool-activity-plans-that-make-learning-fun + + \ No newline at end of file diff --git a/public/general-sitemap.xml b/public/general-sitemap.xml new file mode 100644 index 0000000..d441b4b --- /dev/null +++ b/public/general-sitemap.xml @@ -0,0 +1,32 @@ + + +https://akadmyapp.com/ + + +https://akadmyapp.com/learning-solutions-for-preschools + + +https://akadmyapp.com/preschool-management-solutions + + +https://akadmyapp.com/pricing/akadmy-platform-pricing + + +https://akadmyapp.com/pricing/akadmy-product-pricing + + +https://akadmyapp.com/interakto-coding-worksheets + + +https://akadmyapp.com/term-and-conditions + + +https://akadmyapp.com/contact-us + + +https://akadmyapp.com/purchase/cart + + +https://akadmyapp.com/about-us + + \ No newline at end of file diff --git a/public/images-sitemap.xml b/public/images-sitemap.xml new file mode 100644 index 0000000..268b825 --- /dev/null +++ b/public/images-sitemap.xml @@ -0,0 +1,197 @@ + + +https://akadmyapp.com/assets/home_banner.webp + + +https://akadmyapp.com/assets/Home_TB.webp + + +https://akadmyapp.com/assets/Home_Interakto.webp + + +https://akadmyapp.com/assets/Home_Toddler.webp + + +https://akadmyapp.com/assets/home_platform.webp + + +https://akadmyapp.com/assets/home_platform2.webp + + +https://akadmyapp.com/assets/interakto-coding-section3-3.webp + + +https://akadmyapp.com/assets/Next-Gen-Tech.webp + + +https://akadmyapp.com/assets/Home_parent.webp + + +https://akadmyapp.com/assets/Home_educator.webp + + +https://akadmyapp.com/assets/Home_learner.webp + + +https://akadmyapp.com/assets/contact.svg + + +https://akadmyapp.com/assets/akademy_Logo.png + + +https://akadmyapp.com/assets/prime.webp + + +https://akadmyapp.com/assets/specific.webp + + +https://akadmyapp.com/assets/augmented.webp + + +https://akadmyapp.com/assets/worksheet_4.webp + + +https://akadmyapp.com/assets/worksheet_1.webp + + +https://akadmyapp.com/assets/worksheet_2.webp + + +https://akadmyapp.com/assets/worksheet_3.webp + + +https://akadmyapp.com/assets/ReportCard.webp + + +https://akadmyapp.com/assets/Resources_CurriculumFocus.webp + + +https://akadmyapp.com/assets/Co_Curriculum.webp + + +https://akadmyapp.com/assets/contact.svg + + +https://akadmyapp.com/assets/Interakto_Understanding_world.webp + + +https://akadmyapp.com/assets/interakto_literacy.webp + + +https://akadmyapp.com/assets/Interakto_math.webp + + +https://akadmyapp.com/assets/Interakto_Celebrations.webp + + +https://akadmyapp.com/assets/Interakto_Thinking.webp + + +https://akadmyapp.com/assets/Interakto_coding.webp + + +https://akadmyapp.com/assets/Problem_Solving.webp + + +https://akadmyapp.com/assets/Interakto_Perseverance.webp + + +https://akadmyapp.com/assets/earth.webp + + +https://akadmyapp.com/assets/Fruits.webp + + +https://akadmyapp.com/assets/shaps.webp + + +https://akadmyapp.com/assets/Letter_B.webp + + +https://akadmyapp.com/assets/InteraktoCodingWithoutBG.webp + + +https://akadmyapp.com/assets/InteraktoRobotics.webp + + +https://akadmyapp.com/assets/Family.webp + + +https://akadmyapp.com/assets/babies_child.webp + + +https://akadmyapp.com/assets/food.webp + + +https://akadmyapp.com/assets/home.webp + + +https://akadmyapp.com/assets/outside.webp + + +https://akadmyapp.com/assets/animal.webp + + +https://akadmyapp.com/assets/Friends.webp + + +https://akadmyapp.com/assets/Class.webp + + +https://akadmyapp.com/assets/AI-Attendance.webp + + +https://akadmyapp.com/assets/Buzzboard.webp + + +https://akadmyapp.com/assets/observation.webp + + +https://akadmyapp.com/assets/Games.webp + + +https://akadmyapp.com/assets/family-comunications.webp + + +https://akadmyapp.com/assets/Academic-Report.webp + + +https://akadmyapp.com/assets/family-comunications.webp + + +https://akadmyapp.com/assets/Magic-Workshetets.webp + + +https://akadmyapp.com/assets/Academic-Report.webp + + +https://akadmyapp.com/assets/home_platform.webp + + +https://akadmyapp.com/assets/Interakto_Coding_img.webp + + +https://akadmyapp.com/assets/Data-driven_Decision-making.webp + + +https://akadmyapp.com/assets/developmental_Insights.webp + + +https://akadmyapp.com/assets/connecting_with_Parents.webp + + +https://akadmyapp.com/assets/ai_powered.webp + + +https://akadmyapp.com/assets/Captivating_Worksheets.webp + + +https://akadmyapp.com/assets/Interakto.webp + + +https://akadmyapp.com/assets/TeenyBeans.webp + + +https://akadmyapp.com/assets/Toddlers.webp + + \ No newline at end of file diff --git a/public/products-sitemap.xml b/public/products-sitemap.xml new file mode 100644 index 0000000..ca8fd35 --- /dev/null +++ b/public/products-sitemap.xml @@ -0,0 +1,11 @@ + + +https://akadmyapp.com/digital-preschool-curriculum/ + + +https://akadmyapp.com/interactive-learning-resources-for-preschool + + +https://akadmyapp.com/mother-toddler-program + + \ No newline at end of file diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..e2554b5 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / +Disallow: /_DIZ_ADMIN/ +Sitemap: https://akadmyapp.com/sitemap.xml \ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..0d2fa75 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,14 @@ + + +https://akadmyapp.com/products-sitemap.xml + + +https://akadmyapp.com/general-sitemap.xml + + +https://akadmyapp.com/images-sitemap.xml + + +https://akadmyapp.com/blogs-sitemap.xml + + \ No newline at end of file diff --git a/src/components/Blogs/SingleBlog.jsx b/src/components/Blogs/SingleBlog.jsx index 82e3a75..0b9884e 100644 --- a/src/components/Blogs/SingleBlog.jsx +++ b/src/components/Blogs/SingleBlog.jsx @@ -30,9 +30,16 @@ const Blog = (props) => { // }, [slug]); // blog - const newSchema = props.blog && props.blog.schema && props.blog?.schema.replaceAll("\n", ""); - const newSchema2 = props.blog && props.blog.schema2 && props.blog?.schema2.replaceAll("\n", ""); - const newSchema3 = props.blog && props.blog.schema3 && props.blog?.schema3.replaceAll("\n", ""); + const newSchema = + props.blog && props.blog.schema && props.blog?.schema.replaceAll("\n", ""); + const newSchema2 = + props.blog && + props.blog.schema2 && + props.blog?.schema2.replaceAll("\n", ""); + const newSchema3 = + props.blog && + props.blog.schema3 && + props.blog?.schema3.replaceAll("\n", ""); // console.log("blogUrl", `https://akadmyapp.com${pathname}`); diff --git a/src/components/environments/environments.js b/src/components/environments/environments.js index fecdae3..d907af8 100644 --- a/src/components/environments/environments.js +++ b/src/components/environments/environments.js @@ -1,10 +1,10 @@ import { TOKEN_NAME } from "../utils/constants"; -export const API_BASE_BUZZONE = import.meta.env.VITE_BUZZ_ONE_BASE_URL; -export const API_BASE_BUZZ = import.meta.env.VITE_BUZZ_BASE_URL; +export const API_BASE_BUZZONE = import.meta.env.PUBLIC_BUZZ_ONE_BASE_URL; +export const API_BASE_BUZZ = import.meta.env.PUBLIC_BUZZ_BASE_URL; export const AUTH_TOKEN = () => localStorage.getItem(TOKEN_NAME); export const SCHOOL_ID = () => localStorage.getItem("SCHOOL_ID"); -console.log('TestENV', import.meta.env.PUBLIC_API_KEY); -console.log('TestENV', import.meta.env.PUBLIC_SECRET_KEY); +console.log("TestENV", import.meta.env.PUBLIC_BUZZ_ONE_BASE_URL); +console.log("TestENV", import.meta.env.PUBLIC_BUZZ_BASE_URL); diff --git a/src/components/purchase/Cart/Cart.jsx b/src/components/purchase/Cart/Cart.jsx index 96d42ca..d7bd25c 100644 --- a/src/components/purchase/Cart/Cart.jsx +++ b/src/components/purchase/Cart/Cart.jsx @@ -1,4 +1,4 @@ -import React, { useMemo, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import ArrowForwardOutlinedIcon from "@mui/icons-material/ArrowForwardOutlined"; import ClearIcon from "@mui/icons-material/Clear"; @@ -11,240 +11,259 @@ import ProductCard from "../components/ProductCard/ProductCard"; import { useDispatch, useSelector } from "react-redux"; import { toast } from "react-toastify"; -import { removeItemFromCart, updatePurchase, validateCoupon } from "../../redux/purchaseSlice"; +import { + getPurchaseDetails, + removeItemFromCart, + updatePurchase, + validateCoupon, +} from "../../redux/purchaseSlice"; import { getFormattedCurrency } from "../../utils"; import style from "./Cart.module.css"; function CartPage() { - const dispatch = useDispatch(); - // const navigate = useNavigate(); + const dispatch = useDispatch(); + // const navigate = useNavigate(); - const { purchaseDetails } = useSelector(({ purchase }) => { - return { - purchaseDetails: purchase.purchaseDetails, - }; - }); + const { purchaseDetails } = useSelector(({ purchase }) => { + return { + purchaseDetails: purchase.purchaseDetails, + }; + }); - const removeFromCart = (cartItemId) => { - if (window.confirm("Do you really want to remove this Item?")) { - dispatch(removeItemFromCart({ cartItemId })); - } - }; + console.log("purchaseDetails", purchaseDetails); - const changeLicenseCount = (cartItemId, licenseCount) => { - let cartItem = purchaseDetails.cartItems.find( - ({ _id }) => _id === cartItemId - ); - cartItem = JSON.parse(JSON.stringify(cartItem)); - if (!cartItem.additionalLicenses || cartItem.additionalLicenses.length <= 0) - return; - cartItem.additionalLicenses[0].count = licenseCount; + const removeFromCart = (cartItemId) => { + if (window.confirm("Do you really want to remove this Item?")) { + dispatch(removeItemFromCart({ cartItemId })); + } + }; - dispatch( - updatePurchase({ - cartItem, - }) - ); - }; + const changeLicenseCount = (cartItemId, licenseCount) => { + let cartItem = purchaseDetails.cartItems.find( + ({ _id }) => _id === cartItemId + ); + cartItem = JSON.parse(JSON.stringify(cartItem)); + if (!cartItem.additionalLicenses || cartItem.additionalLicenses.length <= 0) + return; + cartItem.additionalLicenses[0].count = licenseCount; - const changeBuyOnlyLicenseFlag = (cartItemId, value) => { - let cartItem = purchaseDetails.cartItems.find( - ({ _id }) => _id === cartItemId - ); + dispatch( + updatePurchase({ + cartItem, + }) + ); + }; - const payload = { - _id: cartItem._id, - planId: cartItem.planId, - buyingOnlyLicenses: value, - }; + const changeBuyOnlyLicenseFlag = (cartItemId, value) => { + let cartItem = purchaseDetails.cartItems.find( + ({ _id }) => _id === cartItemId + ); - dispatch( - updatePurchase({ - cartItem: payload, - }) - ); - }; + const payload = { + _id: cartItem._id, + planId: cartItem.planId, + buyingOnlyLicenses: value, + }; - const changeTerm = (cartItemId, newIdx) => { - let cartItem = purchaseDetails.cartItems.find( - ({ _id }) => _id === cartItemId - ); - cartItem = JSON.parse(JSON.stringify(cartItem)); + dispatch( + updatePurchase({ + cartItem: payload, + }) + ); + }; - cartItem.planVariantIdx = newIdx; + const changeTerm = (cartItemId, newIdx) => { + let cartItem = purchaseDetails.cartItems.find( + ({ _id }) => _id === cartItemId + ); + cartItem = JSON.parse(JSON.stringify(cartItem)); - dispatch( - updatePurchase({ - cartItem, - }) - ); - }; + cartItem.planVariantIdx = newIdx; - const redirectToCheckout = () => { - // navigate("/purchase/user_details"); - window.location.href = "/purchase/user_details"; - }; + dispatch( + updatePurchase({ + cartItem, + }) + ); + }; - const [couponCode, setCouponCode] = useState(""); + const redirectToCheckout = () => { + // navigate("/purchase/user_details"); + window.location.href = "/purchase/user_details"; + }; - const applyDiscount = () => { - dispatch(validateCoupon({ couponCode })) - .unwrap() - .then((res) => { - const { getOffer } = res; - let discount = { code: couponCode }; - if (getOffer.type === "PERCENTAGE") discount.percentage = getOffer.amount; - else if (getOffer.type === "FLAT") discount.amount = getOffer.amount; + const [couponCode, setCouponCode] = useState(""); - dispatch( - updatePurchase({ - discount, - }) - ); - setCouponCode(""); - }) - .catch((err) => { - toast.error(err.message); - }); - }; + const applyDiscount = () => { + dispatch(validateCoupon({ couponCode })) + .unwrap() + .then((res) => { + const { getOffer } = res; + let discount = { code: couponCode }; + if (getOffer.type === "PERCENTAGE") + discount.percentage = getOffer.amount; + else if (getOffer.type === "FLAT") discount.amount = getOffer.amount; - const removeDiscount = () => { - dispatch( - updatePurchase({ - discount: null, - }) - ); - }; + dispatch( + updatePurchase({ + discount, + }) + ); + setCouponCode(""); + }) + .catch((err) => { + toast.error(err.message); + }); + }; - const isCartEmpty = useMemo(() => { - return purchaseDetails && purchaseDetails.currency ? false : true; - }, [purchaseDetails]); + const removeDiscount = () => { + dispatch( + updatePurchase({ + discount: null, + }) + ); + }; - return ( -
- -
-
- {" "} -

- {!isCartEmpty - ? `Your cart total is ${getFormattedCurrency( - purchaseDetails.currency, - purchaseDetails.totalCost - )}` - : "Your cart is Empty"} -

- -
+ const isCartEmpty = useMemo(() => { + return purchaseDetails && purchaseDetails.currency ? false : true; + }, [purchaseDetails]); -
- {purchaseDetails && - purchaseDetails.cartItems && - purchaseDetails.cartItems.map((data) => ( - - ))} -
+ useEffect(() => { + dispatch(getPurchaseDetails()); + }, []); -
-
-

Sub-total

-

- {purchaseDetails - ? getFormattedCurrency( - purchaseDetails.currency, - purchaseDetails.subTotalCost - ) - : "Nil"} -

-
-
-

Other taxes

-

- {purchaseDetails - ? getFormattedCurrency( - purchaseDetails.currency, - purchaseDetails.otherTaxesCost - ) - : "Nil"} -

-
-
-

Have a discount code?

- {purchaseDetails && purchaseDetails.discount ? ( - <> -
- {purchaseDetails.discount.code} {" "} - -
+ return ( +
+ +
+
+ {" "} +

+ {!isCartEmpty + ? `Your cart total is ${getFormattedCurrency( + purchaseDetails.currency, + purchaseDetails.totalCost + )}` + : "Your cart is Empty"} +

+ +
-

- {getFormattedCurrency( - purchaseDetails.currency, - -purchaseDetails.discount.amount - )} -

- - ) : ( -
- { - setCouponCode(e.target.value); - }} - /> - -
- )} -
+
+ {purchaseDetails && + purchaseDetails.cartItems && + purchaseDetails.cartItems.map((data) => ( + + ))} +
-
-

Total

-

- {purchaseDetails - ? getFormattedCurrency( - purchaseDetails.currency, - purchaseDetails.totalCost - ) - : "Nil"} -

-
- -
- -
- ); +
+
+

Sub-total

+

+ {purchaseDetails + ? getFormattedCurrency( + purchaseDetails.currency, + purchaseDetails.subTotalCost + ) + : "Nil"} +

+
+
+

Other taxes

+

+ {purchaseDetails + ? getFormattedCurrency( + purchaseDetails.currency, + purchaseDetails.otherTaxesCost + ) + : "Nil"} +

+
+
+

Have a discount code?

+ {purchaseDetails && purchaseDetails.discount ? ( + <> +
+ {purchaseDetails.discount.code} {" "} + +
+ +

+ {getFormattedCurrency( + purchaseDetails.currency, + -purchaseDetails.discount.amount + )} +

+ + ) : ( +
+ { + setCouponCode(e.target.value); + }} + /> + +
+ )} +
+ +
+

Total

+

+ {purchaseDetails + ? getFormattedCurrency( + purchaseDetails.currency, + purchaseDetails.totalCost + ) + : "Nil"} +

+
+ +
+ +
+ ); } export default CartPage; diff --git a/src/components/redux/purchaseSlice.js b/src/components/redux/purchaseSlice.js index 5bab827..4139693 100644 --- a/src/components/redux/purchaseSlice.js +++ b/src/components/redux/purchaseSlice.js @@ -3,283 +3,284 @@ import { isAxiosError } from "axios"; import { axiosBuzz, axiosBuzzOne } from "../utils/axios"; export const getAkademyPlans = createAsyncThunk( - `COMMON/akademy/plans`, - async (payload) => { - try { - const response = await axiosBuzzOne({ - method: "GET", - url: "/akademy/subscriptions/plans", - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `COMMON/akademy/plans`, + async (payload) => { + try { + const response = await axiosBuzzOne({ + method: "GET", + url: "/akademy/subscriptions/plans", + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const getAkademyClasses = createAsyncThunk( - `COMMON/akademy/classes`, - async (payload) => { - try { - const response = await axiosBuzzOne({ - method: "GET", - url: "/akademy/bcc/school/classes", - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `COMMON/akademy/classes`, + async (payload) => { + try { + const response = await axiosBuzzOne({ + method: "GET", + url: "/akademy/bcc/school/classes", + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const createPurchase = createAsyncThunk( - `PURCHASE:POST/akademy/purchase`, - async (payload) => { - try { - const response = await axiosBuzzOne({ - method: "POST", - url: "/akademy/subscriptions/purchase", - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `PURCHASE:POST/akademy/purchase`, + async (payload) => { + try { + const response = await axiosBuzzOne({ + method: "POST", + url: "/akademy/subscriptions/purchase", + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const updatePurchase = createAsyncThunk( - `PURCHASE:PUT/akademy/purchase`, - async (payload, { getState, dispatch }) => { - const { purchase } = getState(); + `PURCHASE:PUT/akademy/purchase`, + async (payload, { getState, dispatch }) => { + const { purchase } = getState(); - try { - const response = await axiosBuzzOne({ - method: "PUT", - url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`, - data: payload, - }); - dispatch(getPurchaseDetails()); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + try { + const response = await axiosBuzzOne({ + method: "PUT", + url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`, + data: payload, + }); + dispatch(getPurchaseDetails()); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const removeItemFromCart = createAsyncThunk( - `PURCHASE:DELETE/akademy/purchase`, - async (payload, { getState, dispatch }) => { - const { cartItemId } = payload; - const { purchase } = getState(); + `PURCHASE:DELETE/akademy/purchase`, + async (payload, { getState, dispatch }) => { + const { cartItemId } = payload; + const { purchase } = getState(); - try { - const response = await axiosBuzzOne({ - method: "DELETE", - url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/${cartItemId}`, - data: payload, - }); - dispatch(getPurchaseDetails()); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + try { + const response = await axiosBuzzOne({ + method: "DELETE", + url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/${cartItemId}`, + data: payload, + }); + dispatch(getPurchaseDetails()); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const getPurchaseDetails = createAsyncThunk( - `PURCHASE:GET/akademy/purchase`, - async (payload, { getState }) => { - const { purchase } = getState(); - try { - const response = await axiosBuzzOne({ - method: "GET", - url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`, - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `PURCHASE:GET/akademy/purchase`, + async (payload, { getState }) => { + const { purchase } = getState(); + try { + const response = await axiosBuzzOne({ + method: "GET", + url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart`, + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const initiatePayment = createAsyncThunk( - `PURCHASE:POST/akademy/purchase/initiatePayment`, - async (payload, { getState }) => { - const { purchase } = getState(); - try { - const response = await axiosBuzzOne({ - method: "POST", - url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/checkout`, - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `PURCHASE:POST/akademy/purchase/initiatePayment`, + async (payload, { getState }) => { + const { purchase } = getState(); + try { + const response = await axiosBuzzOne({ + method: "POST", + url: `/akademy/subscriptions/purchase/${purchase.purchaseId}/cart/checkout`, + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const verifyPayment = createAsyncThunk( - `PURCHASE:POST/akademy/purchase/verifyPayment`, - async (payload) => { - try { - const response = await axiosBuzz({ - method: "POST", - url: "/payments/verify", - data: { - txnId: payload.txnId, - provider: "airpay", - }, - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `PURCHASE:POST/akademy/purchase/verifyPayment`, + async (payload) => { + try { + const response = await axiosBuzz({ + method: "POST", + url: "/payments/verify", + data: { + txnId: payload.txnId, + provider: "airpay", + }, + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const validateCoupon = createAsyncThunk( - `COUPON:POST/validate`, - async (payload) => { - try { - const response = await axiosBuzzOne({ - method: "POST", - url: "/offer/validate-coupon", - data: { - code: payload.couponCode, - }, - }); - return response.data; - } catch (err) { - console.log(err); - if (isAxiosError(err)) - throw new Error(err.response.data.message || "Something went wrong"); - throw err; - } - } + `COUPON:POST/validate`, + async (payload) => { + try { + const response = await axiosBuzzOne({ + method: "POST", + url: "/offer/validate-coupon", + data: { + code: payload.couponCode, + }, + }); + return response.data; + } catch (err) { + console.log(err); + if (isAxiosError(err)) + throw new Error(err.response.data.message || "Something went wrong"); + throw err; + } + } ); export const getAllTeenybeansLanguages = createAsyncThunk( - `PURCHASE:getAllTeenybeansLanguages`, - async (paylaod, { rejectWithValue }) => { - try { - const response = await axiosBuzzOne({ - method: "GET", - url: "/akademy/bcc/user/languages", - }); - return response.data; - } catch (error) { - return rejectWithValue(error.response.data); - } - } + `PURCHASE:getAllTeenybeansLanguages`, + async (paylaod, { rejectWithValue }) => { + try { + const response = await axiosBuzzOne({ + method: "GET", + url: "/akademy/bcc/user/languages", + }); + return response.data; + } catch (error) { + return rejectWithValue(error.response.data); + } + } ); export const purchaseSlice = createSlice({ - name: "purchase", - initialState: { - currency: localStorage.getItem("currency") || "INR", - planDetails: {}, - planPriceDetails: { - RETAIL_PARENT: {}, - TUTION_EDUCATOR: {}, - ENTERPRISE_SCHOOL: {}, - }, - classes: [], - purchaseId: localStorage.getItem("PURCHASE_ID"), - purchaseDetails: {}, - userDetails: - (localStorage.getItem("USER_DETAILS") && - JSON.parse(localStorage.getItem("USER_DETAILS"))) || - {}, - statusByName: {}, - teenybeansLanguages: [], - }, - reducers: { - clearPurchaseCart: (state, action) => { - state.purchaseId = undefined; - localStorage.removeItem("PURCHASE_ID"); - state.purchaseDetails = {}; - state.userDetails = {}; - localStorage.removeItem("USER_DETAILS"); - ///////////////////////////////////////////// - localStorage.removeItem("IS_USER_VERIFIED"); - localStorage.removeItem("IS_EMAIL_OTP_SENT"); - }, + name: "purchase", + initialState: { + currency: localStorage.getItem("currency") || "INR", + planDetails: {}, + planPriceDetails: { + RETAIL_PARENT: {}, + TUTION_EDUCATOR: {}, + ENTERPRISE_SCHOOL: {}, + }, + classes: [], + purchaseId: localStorage.getItem("PURCHASE_ID"), + purchaseDetails: {}, + userDetails: + (localStorage.getItem("USER_DETAILS") && + JSON.parse(localStorage.getItem("USER_DETAILS"))) || + {}, + statusByName: {}, + teenybeansLanguages: [], + }, + reducers: { + clearPurchaseCart: (state, action) => { + state.purchaseId = undefined; + localStorage.removeItem("PURCHASE_ID"); + state.purchaseDetails = {}; + state.userDetails = {}; + localStorage.removeItem("USER_DETAILS"); + ///////////////////////////////////////////// + localStorage.removeItem("IS_USER_VERIFIED"); + localStorage.removeItem("IS_EMAIL_OTP_SENT"); + }, - saveUserDetails: (state, action) => { - state.userDetails = action.payload; - localStorage.setItem("USER_DETAILS", JSON.stringify(action.payload)); - }, - }, + saveUserDetails: (state, action) => { + state.userDetails = action.payload; + localStorage.setItem("USER_DETAILS", JSON.stringify(action.payload)); + }, + }, - extraReducers: (builder) => { - builder.addCase(getAkademyPlans.pending, (state, action) => { - state.statusByName["plans"] = "pending"; - }); - builder.addCase(getAkademyPlans.fulfilled, (state, action) => { - state.statusByName["plans"] = "fulfilled"; + extraReducers: (builder) => { + builder.addCase(getAkademyPlans.pending, (state, action) => { + state.statusByName["plans"] = "pending"; + }); + builder.addCase(getAkademyPlans.fulfilled, (state, action) => { + state.statusByName["plans"] = "fulfilled"; - action.payload.data.map((plan) => { - const { _id, products, productCategory } = plan; - state.planDetails[_id] = plan; - if (products && Array.isArray(products) && products.length == 1) { - state.planPriceDetails[productCategory][products[0]] = plan; - } - }); - }); - builder.addCase(getAkademyPlans.rejected, (state, action) => { - state.statusByName["plans"] = "rejected"; - }); + action.payload.data.map((plan) => { + const { _id, products, productCategory } = plan; + state.planDetails[_id] = plan; + if (products && Array.isArray(products) && products.length == 1) { + state.planPriceDetails[productCategory][products[0]] = plan; + } + }); + }); + builder.addCase(getAkademyPlans.rejected, (state, action) => { + state.statusByName["plans"] = "rejected"; + }); - builder.addCase(getAkademyClasses.pending, (state, action) => { - state.statusByName["classes"] = "pending"; - }); - builder.addCase(getAkademyClasses.fulfilled, (state, action) => { - state.statusByName["classes"] = "fulfilled"; - state.classes = ["IK3", "IK2", "IK1", "PG"]?.map((item) => - action.payload.data?.find((el) => el.name === item) - ); - }); - builder.addCase(getAkademyClasses.rejected, (state, action) => { - state.statusByName["classes"] = "rejected"; - }); + builder.addCase(getAkademyClasses.pending, (state, action) => { + state.statusByName["classes"] = "pending"; + }); + builder.addCase(getAkademyClasses.fulfilled, (state, action) => { + state.statusByName["classes"] = "fulfilled"; + state.classes = ["IK3", "IK2", "IK1", "PG"]?.map((item) => + action.payload.data?.find((el) => el.name === item) + ); + }); + builder.addCase(getAkademyClasses.rejected, (state, action) => { + state.statusByName["classes"] = "rejected"; + }); - builder.addCase(createPurchase.fulfilled, (state, action) => { - const purchaseId = action.payload.data._id; - state.purchaseId = purchaseId; - localStorage.setItem("PURCHASE_ID", purchaseId); - }); + builder.addCase(createPurchase.fulfilled, (state, action) => { + const purchaseId = action.payload.data._id; + state.purchaseId = purchaseId; + localStorage.setItem("PURCHASE_ID", purchaseId); + }); - builder.addCase(getPurchaseDetails.fulfilled, (state, action) => { - state.purchaseDetails = action.payload.data.data[0]; - }); - builder.addCase(getAllTeenybeansLanguages.fulfilled, (state, action) => { - state.teenybeansLanguages = action.payload.data; - }); - }, + builder.addCase(getPurchaseDetails.fulfilled, (state, action) => { + state.purchaseDetails = action.payload.data.data[0]; + console.log("lookData", action.payload); + }); + builder.addCase(getAllTeenybeansLanguages.fulfilled, (state, action) => { + state.teenybeansLanguages = action.payload.data; + }); + }, }); // Action creators are generated for each case reducer function diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 281f907..34813ec 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -6,14 +6,26 @@ export interface Props { ogImage: string; ogUrl: string; canonicalUrl: string; + newSchema1:string; + newSchema2:string; + newSchema3:string; } -const { title, description, keywords, ogImage, ogUrl, canonicalUrl } = Astro.props; +const { title, description, keywords, ogImage, ogUrl, canonicalUrl, newSchema1, newSchema2, newSchema3 } = Astro.props; --- + + + @@ -30,6 +42,29 @@ const { title, description, keywords, ogImage, ogUrl, canonicalUrl } = Astro.pro + {newSchema1 && ( +