From bc378649144747ecd774f59904895f3a6d12872d Mon Sep 17 00:00:00 2001 From: Vins Date: Thu, 11 Apr 2024 11:34:43 +0200 Subject: [PATCH] Manage collaborators --- package.json | 2 +- .../Admin/Subscriptions/Subscriptions.ts | 19 +++- .../SubscriptionManageCollaborators/index.tsx | 90 ++++++------------- 3 files changed, 48 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index f3708f42..870848ea 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev -p 5005", + "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", diff --git a/src/front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions.ts b/src/front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions.ts index f6f89005..04a78945 100644 --- a/src/front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions.ts +++ b/src/front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions.ts @@ -5,6 +5,10 @@ export interface IPostSubscriptionsParams { emails: string[]; } +export interface IPutSubscriptionsParams { + seats: any; +} + export default class Subscriptions extends BaseAdmin { private static instance: Subscriptions; private readonly baseURl = this.namespaceUrl.concat("/subscriptions"); @@ -34,7 +38,7 @@ export default class Subscriptions extends BaseAdmin { } /** - * @description : Create a Document + * @description : Invite collaborators to a subscription */ public async post(body: IPostSubscriptionsParams) { const url = new URL(this.baseURl.concat(`/invite`)); @@ -45,4 +49,17 @@ export default class Subscriptions extends BaseAdmin { return Promise.reject(err); } } + + /** + * @description : Update a Subscription + */ + public async put(uid: string, body: IPutSubscriptionsParams) { + const url = new URL(this.baseURl.concat(`/${uid}`)); + try { + return await this.putRequest(url, body as any); + } catch (err) { + this.onError(err); + return Promise.reject(err); + } + } } diff --git a/src/front/Components/Layouts/Subscription/Manage/SubscriptionManageCollaborators/index.tsx b/src/front/Components/Layouts/Subscription/Manage/SubscriptionManageCollaborators/index.tsx index 18dab423..21222202 100644 --- a/src/front/Components/Layouts/Subscription/Manage/SubscriptionManageCollaborators/index.tsx +++ b/src/front/Components/Layouts/Subscription/Manage/SubscriptionManageCollaborators/index.tsx @@ -8,78 +8,40 @@ import React, { useCallback, useEffect, useState } from "react"; import User, { Subscription } from "le-coffre-resources/dist/Admin"; import JwtService from "@Front/Services/JwtService/JwtService"; import Subscriptions from "@Front/Api/LeCoffreApi/Admin/Subscriptions/Subscriptions"; +import Users from "@Front/Api/LeCoffreApi/Admin/Users/Users"; +import { useRouter } from "next/router"; export default function SubscriptionManageCollaborators() { + const router = useRouter(); const [subscription, setSubscription] = useState(null); - const [availableCollaborators, _setAvailableCollaborators] = useState([ - { - created_at: new Date("2021-09-29T14:00:00.000Z"), - uid: "1", - idNot: "1", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - contact: { - civility: "M", - created_at: new Date("2021-09-29T14:00:00.000Z"), - email: "jean.dupont@gmail.com", - first_name: "Jean", - last_name: "Dupont", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - }, - }, - { - created_at: new Date("2021-09-29T14:00:00.000Z"), - uid: "2", - idNot: "1", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - contact: { - civility: "M", - created_at: new Date("2021-09-29T14:00:00.000Z"), - email: "jean.dupont@gmail.com", - first_name: "Jean", - last_name: "Dupont", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - }, - }, - - { - created_at: new Date("2021-09-29T14:00:00.000Z"), - uid: "3", - idNot: "1", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - contact: { - civility: "M", - created_at: new Date("2021-09-29T14:00:00.000Z"), - email: "jean.dupont@gmail.com", - first_name: "Jean", - last_name: "Dupont", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - }, - }, - { - created_at: new Date("2021-09-29T14:00:00.000Z"), - uid: "4", - idNot: "1", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - contact: { - civility: "M", - created_at: new Date("2021-09-29T14:00:00.000Z"), - email: "jean.dupont@gmail.com", - first_name: "Jean", - last_name: "Dupont", - updated_at: new Date("2021-09-29T14:00:00.000Z"), - }, - }, - ]); + const [availableCollaborators, _setAvailableCollaborators] = useState([]); const [selectedCollaborators, setSelectedCollaborators] = useState([]); const loadSubscription = useCallback(async () => { const jwt = JwtService.getInstance().decodeJwt(); - const subscription = await Subscriptions.getInstance().get({ where: { office: { uid: jwt?.office_Id } } }); + const subscription = await Subscriptions.getInstance().get({ + where: { office: { uid: jwt?.office_Id } }, + include: { seats: { include: { user: true } } }, + }); if (!subscription[0]) return; + console.log(subscription[0]); + subscription[0].seats?.forEach((seat) => setSelectedCollaborators((prev) => [...prev, seat.user.uid!])); setSubscription(subscription[0]); }, []); + const loadCollaborators = useCallback(async () => { + const collaborators = await Users.getInstance().get({ + where: { office_membership: { uid: JwtService.getInstance().getUserJwtPayload()?.office_Id } }, + include: { + contact: true, + seats: true, + }, + }); + console.log(collaborators); + _setAvailableCollaborators(collaborators); + }, []); + const handleChange = useCallback( (event: React.ChangeEvent) => { if (!subscription) return; @@ -100,12 +62,18 @@ export default function SubscriptionManageCollaborators() { }; const handleSubmit = async (e: React.FormEvent | null, values: { [key: string]: string }) => { + const subcriptionToUpdate = { + seats: selectedCollaborators.map((collaborator) => ({ user: { uid: collaborator } })), + }; + await Subscriptions.getInstance().put(subscription?.uid!, subcriptionToUpdate); + router.push("/subscription/manage"); if (!e) return; e.preventDefault(); }; useEffect(() => { loadSubscription(); + loadCollaborators(); }, [loadSubscription]); return ( @@ -141,7 +109,7 @@ export default function SubscriptionManageCollaborators() { {selectedCollaborators.length} collaborateurs sélectionnés
-