load subscription in success/error

This commit is contained in:
Maxime Lalo 2024-04-04 16:53:01 +02:00
parent 493b2d8a80
commit f5ce057a26
3 changed files with 134 additions and 60 deletions

View File

@ -1,14 +1,44 @@
import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate";
import classes from "./classes.module.scss"; import classes from "./classes.module.scss";
import SubscriptionTicket from "../Components/SubscriptionTicket";
import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography";
import MessageBox from "@Front/Components/Elements/MessageBox"; import MessageBox from "@Front/Components/Elements/MessageBox";
import SubscriptionClientInfos from "../Components/SubscriptionClientInfos"; import SubscriptionClientInfos from "../Components/SubscriptionClientInfos";
import Button from "@Front/Components/DesignSystem/Button"; import Button from "@Front/Components/DesignSystem/Button";
import { useCallback, useEffect, useState } from "react";
import { Subscription } from "le-coffre-resources/dist/Admin";
import JwtService from "@Front/Services/JwtService/JwtService";
import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions";
import SubscribeCheckoutTicket, { EPaymentFrequency } from "../Components/SubscribeCheckoutTicket";
import { EForfeitType } from "../SubscriptionFacturation";
export default function SubscriptionError() { export default function SubscriptionError() {
const [subscription, setSubscription] = useState<Subscription | null>(null);
const loadSubscription = useCallback(async () => {
const jwt = JwtService.getInstance().decodeJwt();
const subscription = await Subscriptions.getInstance().get({ where: { office: { uid: jwt?.office_Id } } });
console.log(subscription);
if (!subscription[0]) return;
setSubscription(subscription[0]);
}, []);
const getFrequency = useCallback(() => {
if (!subscription) return;
const start = new Date(subscription.start_date);
const end = new Date(subscription.end_date);
const diffTime = Math.abs(end.getTime() - start.getTime());
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
return diffDays >= 365 ? EPaymentFrequency.yearly : EPaymentFrequency.monthly;
}, [subscription]);
useEffect(() => {
loadSubscription();
}, [loadSubscription]);
return ( return (
<DefaultTemplate title="Erreur à la souscription"> <DefaultTemplate title="Erreur à la souscription">
{subscription && (
<div className={classes["root"]}> <div className={classes["root"]}>
<div className={classes["left"]}> <div className={classes["left"]}>
<div className={classes["title"]}> <div className={classes["title"]}>
@ -33,9 +63,15 @@ export default function SubscriptionError() {
<Button>Réessayer le paiement</Button> <Button>Réessayer le paiement</Button>
</div> </div>
<div className={classes["right"]}> <div className={classes["right"]}>
<SubscriptionTicket /> <SubscribeCheckoutTicket
forfeitType={subscription.type === "STANDARD" ? EForfeitType.standard : EForfeitType.unlimited}
numberOfCollaborators={subscription.nb_seats ?? 0}
disableInputs
defaultFrequency={getFrequency()}
/>
</div> </div>
</div> </div>
)}
</DefaultTemplate> </DefaultTemplate>
); );
} }

View File

@ -9,6 +9,7 @@ import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscripti
import { useCallback, useState } from "react"; import { useCallback, useState } from "react";
import { TrashIcon } from "@heroicons/react/24/outline"; import { TrashIcon } from "@heroicons/react/24/outline";
import PlusIcon from "@Assets/Icons/plus.svg"; import PlusIcon from "@Assets/Icons/plus.svg";
import Module from "@Front/Config/Module";
type EmailLine = { type EmailLine = {
element: JSX.Element; element: JSX.Element;
@ -51,6 +52,7 @@ export default function SubscriptionInvite() {
await Subscriptions.getInstance().post({ await Subscriptions.getInstance().post({
emails, emails,
}); });
router.push(Module.getInstance().get().modules.pages.Subscription.pages.Manage.props.path);
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }

View File

@ -8,11 +8,39 @@ import Link from "next/link";
import Module from "@Front/Config/Module"; import Module from "@Front/Config/Module";
import { EForfeitType } from "../SubscriptionFacturation"; import { EForfeitType } from "../SubscriptionFacturation";
import SubscribeCheckoutTicket, { EPaymentFrequency } from "../Components/SubscribeCheckoutTicket"; import SubscribeCheckoutTicket, { EPaymentFrequency } from "../Components/SubscribeCheckoutTicket";
import { useCallback, useEffect, useState } from "react";
import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions";
import JwtService from "@Front/Services/JwtService/JwtService";
import { Subscription } from "le-coffre-resources/dist/Admin";
let numberOfCollaborators = 5;
export default function SubscriptionSuccess() { export default function SubscriptionSuccess() {
const [subscription, setSubscription] = useState<Subscription | null>(null);
const loadSubscription = useCallback(async () => {
const jwt = JwtService.getInstance().decodeJwt();
const subscription = await Subscriptions.getInstance().get({ where: { office: { uid: jwt?.office_Id } } });
console.log(subscription);
if (!subscription[0]) return;
setSubscription(subscription[0]);
}, []);
const getFrequency = useCallback(() => {
if (!subscription) return;
const start = new Date(subscription.start_date);
const end = new Date(subscription.end_date);
const diffTime = Math.abs(end.getTime() - start.getTime());
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
return diffDays >= 365 ? EPaymentFrequency.yearly : EPaymentFrequency.monthly;
}, [subscription]);
useEffect(() => {
loadSubscription();
}, [loadSubscription]);
return ( return (
<DefaultTemplate title="Abonnement réussi"> <DefaultTemplate title="Abonnement réussi">
{subscription && (
<div className={classes["root"]}> <div className={classes["root"]}>
<div className={classes["left"]}> <div className={classes["left"]}>
<div className={classes["title"]}> <div className={classes["title"]}>
@ -33,23 +61,31 @@ export default function SubscriptionSuccess() {
<SubscriptionClientInfos /> <SubscriptionClientInfos />
</div> </div>
<div className={classes["separator"]} /> <div className={classes["separator"]} />
{subscription.type === "STANDARD" && (
<Link <Link
href={ href={
Module.getInstance().get().modules.pages.Subscription.pages.Invite.props.path + Module.getInstance().get().modules.pages.Subscription.pages.Invite.props.path +
`?nbOfCollaborators=${numberOfCollaborators}` `?nbOfCollaborators=${subscription.nb_seats ?? 0}`
}> }>
<Button>Inviter vos collaborateurs</Button> <Button>Inviter vos collaborateurs</Button>
</Link> </Link>
)}
{subscription.type === "UNLIMITED" && (
<Link href={Module.getInstance().get().modules.pages.Subscription.pages.Invite.props.path}>
<Button>Inviter vos collaborateurs</Button>
</Link>
)}
</div> </div>
<div className={classes["right"]}> <div className={classes["right"]}>
<SubscribeCheckoutTicket <SubscribeCheckoutTicket
forfeitType={EForfeitType.standard} forfeitType={subscription.type === "STANDARD" ? EForfeitType.standard : EForfeitType.unlimited}
numberOfCollaborators={numberOfCollaborators} numberOfCollaborators={subscription.nb_seats ?? 0}
disableInputs disableInputs
defaultFrequency={EPaymentFrequency.yearly} defaultFrequency={getFrequency()}
/> />
</div> </div>
</div> </div>
)}
</DefaultTemplate> </DefaultTemplate>
); );
} }