import React, { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { useParams } from "react-router-dom"; import { useSubscription } from "../../hooks/useAuth"; import { formatFigure, frequencyLabel } from "../../utils/appUtils"; import { setSelfTenant } from "../../slices/localVariablesSlice"; import SelectedPlanSkeleton from "./SelectedPlanSkeleton"; import { error } from "pdf-lib"; const SelectPlan = ({ currentStep, setStepStatus, onNext }) => { const { frequency, planName } = useParams(); const [selectedFrequency, setSelectedFrequency] = useState( parseInt(frequency) ); const dispatch = useDispatch(); const client = useSelector( (store) => store.localVariables.selfTenant.details ); const [selectedPlan, setSelectedPlan] = useState(planName); const [currentPlan, setCurrentPlan] = useState(null); const [failPayment, setFailPayment] = useState(null); const { data: plans, isError, isLoading, error, refetch, isRefetching, } = useSubscription(selectedFrequency); const handleChange = (e) => setSelectedPlan(e.target.value); useEffect(() => { if (!plans || !selectedPlan) return; const selected = plans.find((p) => p.planName === selectedPlan); if (selected) { setCurrentPlan(selected); dispatch( setSelfTenant({ planId: selected.id, frequency: selectedFrequency }) ); } }, [plans, selectedPlan, dispatch, selectedFrequency]); const handleNextStep = () => { dispatch(setSelfTenant({ frequency: selectedFrequency })); setStepStatus((prev) => ({ ...prev, 2: "success" })); onNext(); }; return (

Choose the Perfect Plan for Your Organization

Select a plan that fits your team’s needs and unlock the features that drive productivity.

setSelectedFrequency(Number(e.target.value)) } />
setSelectedFrequency(Number(e.target.value)) } />
setSelectedFrequency(Number(e.target.value)) } />
setSelectedFrequency(Number(e.target.value)) } />
{isError && (

{error?.message}

{error?.name} {isRefetching ? ( <> {" "} Retrying... ) : ( "Try to refetch" )}
)} {isLoading ? ( ) : ( <> {plans?.map((plan) => (
))} {selectedPlan && (
{(() => { const selected = plans?.find( (p) => p.planName === selectedPlan ); if (!selected) return null; const { price, frequency, trialDays, maxUser, maxStorage, currency, features, } = selected; return ( <>
Max Users: {maxUser}
Max Storage: {maxStorage} MB
Trial Days: {trialDays}
Included Features
{features && Object.entries(features?.modules || {}) .filter(([key]) => key !== "id") .map(([key, mod]) => (
{mod.name}
))}
Support
    {features?.supports?.emailSupport && (
  • Email Support
  • )} {features?.supports?.phoneSupport && (
  • Phone Support
  • )} {features?.supports?.prioritySupport && (
  • Priority Support
  • )}

Duration
{frequencyLabel(frequency, true)}
Total Price
{formatFigure(price, { type: "currency", currency: currency.currencyCode, })}
); })()}
)} )}
{/* Image Section */}
image
); }; export default SelectPlan;