diff --git a/src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts b/src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts index b477cf76..bef47a5d 100644 --- a/src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts +++ b/src/front/Api/LeCoffreApi/Admin/Stripe/Stripe.ts @@ -12,6 +12,7 @@ export type IPostStripeResponse = { export type IGetClientPortalSessionResponse = { url: string; + cancel_at?: number; }; export interface IGetCustomerBySubscriptionIdParams { @@ -45,7 +46,7 @@ export default class Stripe extends BaseAdmin { } } - public async getClientPortalSession(stripe_subscription_id: string) { + public async getStripeSubscriptionByUid(stripe_subscription_id: string) { const url = new URL(this.baseURl.concat(`/${stripe_subscription_id}`)); try { return await this.getRequest(url); @@ -55,6 +56,16 @@ export default class Stripe extends BaseAdmin { } } + public async getClientPortalSession(stripe_subscription_id: string) { + const url = new URL(this.baseURl.concat(`/${stripe_subscription_id}/client-portal`)); + try { + return await this.getRequest(url); + } catch (err) { + this.onError(err); + return Promise.reject(err); + } + } + public async getCustomerBySubscriptionId(subscriptionId: string) { const url = new URL(this.baseURl.concat(`/${subscriptionId}/customer`)); try { diff --git a/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx b/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx index cb0238c8..4095f2da 100644 --- a/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx +++ b/src/front/Components/Layouts/Subscription/SubscriptionFacturation/index.tsx @@ -27,6 +27,7 @@ export const forfeitsPrices: Record = { export default function SubscriptionFacturation() { const router = useRouter(); const [subscription, setSubscription] = useState(null); + const [cancelAt, setCancelAt] = useState(null); const { close: closeCancelSubscription, isOpen: isCancelSubscriptionOpen } = useOpenable(); const { close: closeConfirmation, isOpen: isConfirmationOpen } = useOpenable(); @@ -47,13 +48,17 @@ export default function SubscriptionFacturation() { } catch (error) {} }; - const cancelSubscription = async () => { + const cancelOrReactivateSubscription = async () => { try { const jwt = JwtService.getInstance().decodeJwt(); const subscription = await Subscriptions.getInstance().get({ where: { office: { uid: jwt?.office_Id } } }); if (!subscription[0]) return; const stripe_client_portal = await Stripe.getInstance().getClientPortalSession(subscription[0].stripe_subscription_id!); - router.push(stripe_client_portal.url + "/subscriptions/" + subscription[0].stripe_subscription_id + "/cancel"); + if (!cancelAt) { + router.push(stripe_client_portal.url + "/subscriptions/" + subscription[0].stripe_subscription_id + "/cancel"); + } else { + router.push(stripe_client_portal.url + "/subscriptions/" + subscription[0].stripe_subscription_id + "/reactivate"); + } } catch (error) {} }; @@ -73,6 +78,8 @@ export default function SubscriptionFacturation() { if (!subscription[0]) { router.push(Module.getInstance().get().modules.pages.Subscription.pages.New.props.path); } else { + const stripeSubscription = await Stripe.getInstance().getStripeSubscriptionByUid(subscription[0].stripe_subscription_id!); + if (stripeSubscription.cancel_at !== null) setCancelAt(new Date(stripeSubscription.cancel_at! * 1000)); setSubscription(subscription[0]); } }, [router]); @@ -110,13 +117,20 @@ export default function SubscriptionFacturation() { Plan par utilisateur - {subscription.type === "STANDARD" && ( + {subscription.type === "STANDARD" && !cancelAt && (
Plan actif
)} + {subscription.type === "STANDARD" && cancelAt && ( +
+ + Plan actif jusqu'au {cancelAt.toLocaleDateString()} + +
+ )}
@@ -174,13 +188,20 @@ export default function SubscriptionFacturation() { Plan par office
- {subscription.type === "UNLIMITED" && ( + {subscription.type === "UNLIMITED" && !cancelAt && (
Plan actif
)} + {subscription.type === "UNLIMITED" && cancelAt && ( +
+ + Plan actif jusqu'au {cancelAt.toLocaleDateString()} + +
+ )}
@@ -213,10 +234,17 @@ export default function SubscriptionFacturation() {
-
@@ -225,7 +253,7 @@ export default function SubscriptionFacturation() {