Files
MermsPanelReactJS/src/component/subscription/Subscription.jsx
T
CHIEFSOFT\ameye 4ec74ff895 sub tabs
2025-08-30 07:48:26 -04:00

111 lines
5.5 KiB
React

import React from 'react'
import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS";
import getImage from "../../utils/getImage";
import {getSubscriptions} from '../../services/services';
import {useQuery} from '@tanstack/react-query';
import queryKeys from '../../services/queryKeys';
import siteLinks from "../../links/siteLinks";
import {Link, useNavigate} from 'react-router-dom'
import getDateFromDateString from '../../helpers/GetDateFromDateString';
export default function Subscription() {
const navigate = useNavigate()
const pricingFields = {
starter: {name: 'Starter', price: 5.99, active: true},
basic: {name: 'Basic', price: 12.99, active: true},
premium: {name: 'Premium', price: 20.00, active: true},
}
const {data, isFetching, isError, error} = useQuery({
queryKey: queryKeys.subscriptions,
queryFn: () => {
let reqData = {
token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID
}
return getSubscriptions(reqData)
}
})
const currentSubscription = data?.data?.current_product
const otherSubscriptions = data?.data?.options
const stripe_customer_id = data?.data.stripe_customer_id
// console.log('urlData', data?.data)
return (
<>
<BreadcrumbComBS title='Subscription' paths={['Dashboard', 'Subscription']}/>
{isFetching ?
<>
<div className="col-12">
<p className='text-mute'>Loading...</p>
</div>
</>
: isError ?
<div className="col-12">
<p className='text-danger'>{error.message}</p>
</div>
:
<div className="row">
<div className="col-12 col-lg-6 col-xl-3">
<div className="card card-statistics text-center py-3" style={{backgroundColor: '#e6f5f4'}}>
<div className="card-body pricing-content">
<div className="pricing-content-card" style={{minHeight: '350px'}}>
<h5>Your Subscription(s)</h5>
<h2 className="text-primary pt-3">{currentSubscription?.display_name}</h2>
</div>
<div className="pt-2" style={{textAlign: 'left'}}>
<div style={{fontSize: '10px'}}>
Next Payment: {getDateFromDateString(currentSubscription?.next_payment)}
</div>
</div>
</div>
</div>
</div>
<>
{Object.entries(otherSubscriptions)?.map(([key, value]) => (
<div key={key} className="col-12 col-lg-6 col-xl-3">
<div className="card card-statistics text-center py-3">
<div className="card-body pricing-content">
<div className="pricing-content-card" style={{minHeight: '350px'}}>
<h5>{value.display_name}</h5>
<h2 className="text-primary pt-3">${value.monthly}</h2>
<p className="text-primary pb-3">/ Monthly</p>
<ol className="py-2"
style={{fontSize: '16px', fontWeight: 'bold', textAlign: 'left'}}>
{value?.items?.map(item => (
<li key={item.description}>{item.description}</li>
))}
</ol>
</div>
</div>
<div className="pt-2">
{
(currentSubscription?.display_name == value.option_name) ? '<b>Current Subscription</b>>' :
<button onClick={() => {
navigate(siteLinks.subscribe, {
state: {
selectedSubscription: value,
customerId: stripe_customer_id
}
})
}}
className="btn btn-inverse-secondary btn-round btn-sm">Go {value.display_name}</button>
}
</div>
</div>
</div>
))}
</>
</div>
}
</>
)
}