Merge commit 'eae078f23a1e5bfbac6386bd0bd9347462cea034' into dev

This commit is contained in:
Maxime Lalo 2024-04-04 14:37:26 +02:00
commit 74561d5362
4 changed files with 44 additions and 3 deletions

View File

@ -10,6 +10,10 @@ export type IPostStripeResponse = {
url: string;
};
export type IGetClientPortalSessionResponse = {
url: string;
};
export default class Stripe extends BaseAdmin {
private static instance: Stripe;
private readonly baseURl = this.namespaceUrl.concat("/stripe");
@ -37,4 +41,14 @@ export default class Stripe extends BaseAdmin {
return Promise.reject(err);
}
}
public async getClientPortalSession(stripe_subscription_id: string) {
const url = new URL(this.baseURl.concat(`/${stripe_subscription_id}`));
try {
return await this.getRequest<IGetClientPortalSessionResponse>(url);
} catch (err) {
this.onError(err);
return Promise.reject(err);
}
}
}

View File

@ -1,3 +1,4 @@
import { Subscription } from "le-coffre-resources/dist/Admin";
import BaseAdmin from "../../../../../common/Api/LeCoffreApi/Admin/BaseAdmin";
export interface IPostSubscriptionsParams {
@ -20,6 +21,18 @@ export default class Subscriptions extends BaseAdmin {
}
}
public async get(q: any) {
const url = new URL(this.baseURl);
const query = { q };
if (q) Object.entries(query).forEach(([key, value]) => url.searchParams.set(key, JSON.stringify(value)));
try {
return await this.getRequest<Subscription>(url);
} catch (err) {
this.onError(err);
return Promise.reject(err);
}
}
/**
* @description : Create a Document
*/

View File

@ -46,8 +46,6 @@ export default function SubscribeCheckoutTicket(props: IProps) {
};
const handleSubmitPayment = async () => {
console.log("handleSubmitPayment");
const stripeCheckout = {
type: EType.Standard,
nb_seats: numberOfCollaborators,

View File

@ -8,12 +8,17 @@ import useOpenable from "@Front/Hooks/useOpenable";
import MessageBox from "@Front/Components/Elements/MessageBox";
import Link from "next/link";
import Module from "@Front/Config/Module";
import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions";
import JwtService from "@Front/Services/JwtService/JwtService";
import Stripe from "@Front/Api/LeCoffreApi/Admin/Stripe/Stripe";
import { useRouter } from "next/router";
export enum EForfeitType {
"standard",
"unlimited",
}
export default function SubscriptionFacturation() {
const router = useRouter();
const [forfeitType, _setForfeitType] = useState(EForfeitType.standard);
const { close: closeCancelSubscription, isOpen: isCancelSubscriptionOpen, open: openCancelSubscription } = useOpenable();
const { close: closeConfirmation, isOpen: isConfirmationOpen, open: openConfirmation } = useOpenable();
@ -24,6 +29,17 @@ export default function SubscriptionFacturation() {
return;
}, [closeCancelSubscription, openConfirmation]);
const manageBilling = async () => {
console.log("handleSubmitPayment");
try {
const jwt = JwtService.getInstance().decodeJwt();
const subscription = await Subscriptions.getInstance().get({ officeId: jwt?.office_Id });
const stripe_client_portal = await Stripe.getInstance().getClientPortalSession(subscription.stripe_subscription_id!);
router.push(stripe_client_portal.url);
} catch (error) {}
};
return (
<DefaultTemplate title="Nouvelle souscription">
<div className={classes["root"]}>
@ -141,7 +157,7 @@ export default function SubscriptionFacturation() {
Arrêter l'abonnement
</Typography>
</Button>
<Button>Gérer la facturation</Button>
<Button onClick={manageBilling}>Gérer la facturation</Button>
</div>
</div>
<Confirm