NeahNew/.next/static/chunks/7165-5ea997da5f342c9d.js
2025-05-06 23:01:34 +02:00

1 line
11 KiB
JavaScript

"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7165],{17580:(e,r,s)=>{s.d(r,{A:()=>a});let a=(0,s(19946).A)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]])},67165:(e,r,s)=>{s.d(r,{GroupsTable:()=>b});var a=s(95155),t=s(12115),i=s(88524),c=s(97168),o=s(89852),l=s(84616),n=s(5623),d=s(13717),m=s(17580),u=s(74126),h=s(99840),g=s(67133),x=s(82714),p=s(14503);function y(e){let{open:r,onOpenChange:s,onAfterClose:i,triggerComponent:c,children:o,className:l}=e,n=(0,t.useCallback)(e=>{s(e),!e&&i&&setTimeout(i,300)},[s,i]);return(0,a.jsxs)(h.lG,{open:r,onOpenChange:n,children:[c&&(0,a.jsx)(h.zM,{asChild:!0,children:c}),(0,a.jsx)(h.Cf,{className:l,children:o})]})}function b(e){let{userRole:r=[]}=e,[s,b]=(0,t.useState)([]),[j,f]=(0,t.useState)(!0),[N,v]=(0,t.useState)(""),[w,C]=(0,t.useState)(!1),[E,k]=(0,t.useState)(""),[A,L]=(0,t.useState)(!1),[S,R]=(0,t.useState)(null),[M,O]=(0,t.useState)(""),[T,F]=(0,t.useState)(!1),[G,U]=(0,t.useState)([]),[_,$]=(0,t.useState)([]);(0,t.useEffect)(()=>{J()},[]);let J=async()=>{try{f(!0);let e=await fetch("/api/groups"),r=await e.json();if(!e.ok)throw Error(r.message||"Erreur lors de la r\xe9cup\xe9ration des groupes");let s=await Promise.all((Array.isArray(r)?r:[]).map(async e=>{try{let r=await fetch("/api/groups/".concat(e.id,"/members"));if(r.ok){let s=await r.json();return{...e,membersCount:Array.isArray(s)?s.length:0}}return e}catch(r){return console.error("Error fetching members for group ".concat(e.id,":"),r),e}}));b(s)}catch(e){(0,p.oR)({title:"Erreur",description:e instanceof Error?e.message:"Une erreur est survenue",variant:"destructive"})}finally{f(!1)}},P=async()=>{try{if(!E.trim())throw Error("Le nom du groupe est requis");let e=await fetch("/api/groups",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:E})}),r=await e.json();if(!e.ok)throw Error(r.message||"Erreur lors de la cr\xe9ation du groupe");b(e=>[...e,r]),C(!1),k(""),(0,p.oR)({title:"Succ\xe8s",description:"Le groupe a \xe9t\xe9 cr\xe9\xe9 avec succ\xe8s"})}catch(e){(0,p.oR)({title:"Erreur",description:e instanceof Error?e.message:"Une erreur est survenue",variant:"destructive"})}},z=async e=>{try{if(!(await fetch("/api/groups/".concat(e),{method:"DELETE"})).ok)throw Error("Erreur lors de la suppression du groupe");b(r=>r.filter(r=>r.id!==e)),(0,p.oR)({title:"Succ\xe8s",description:"Le groupe a \xe9t\xe9 supprim\xe9 avec succ\xe8s"})}catch(e){(0,p.oR)({title:"Erreur",description:e instanceof Error?e.message:"Une erreur est survenue",variant:"destructive"})}},q=async e=>{try{let r=s.find(r=>r.id===e);if(!r)return;R(r),O(r.name),L(!0)}catch(e){(0,p.oR)({title:"Erreur",description:e instanceof Error?e.message:"Une erreur est survenue",variant:"destructive"})}},H=async()=>{try{if(!S||!M.trim())throw Error("Le nom du groupe est requis");if(!(await fetch("/api/groups/".concat(S.id),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:M})})).ok)throw Error("Erreur lors de la modification du groupe");b(e=>e.map(e=>e.id===S.id?{...e,name:M}:e)),L(!1),R(null),O(""),(0,p.oR)({title:"Succ\xe8s",description:"Le groupe a \xe9t\xe9 modifi\xe9 avec succ\xe8s"})}catch(e){(0,p.oR)({title:"Erreur",description:e instanceof Error?e.message:"Une erreur est survenue",variant:"destructive"})}},B=async e=>{let r=s.find(r=>r.id===e);if(r){R(r);try{let r=await fetch("/api/groups/".concat(e,"/members"));if(!r.ok)throw Error("Failed to fetch group members");let s=await r.json();U(s),b(r=>r.map(r=>r.id===e?{...r,membersCount:s.length}:r));let a=await fetch("/api/users");if(!a.ok)throw Error("Failed to fetch users");let t=await a.json();$(t.filter(e=>!s.some(r=>r.id===e.id))),F(!0)}catch(e){(0,p.oR)({title:"Erreur",description:"Erreur lors de la r\xe9cup\xe9ration des membres",variant:"destructive"})}}},D=async e=>{if(S)try{if(!(await fetch("/api/groups/".concat(S.id,"/members"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:e})})).ok)throw Error("Failed to add member");let r=_.find(r=>r.id===e);r&&(U(e=>[...e,r]),$(r=>r.filter(r=>r.id!==e))),b(e=>e.map(e=>e.id===S.id?{...e,membersCount:e.membersCount+1}:e)),(0,p.oR)({title:"Success",description:"Member added successfully"})}catch(e){(0,p.oR)({title:"Error",description:e instanceof Error?e.message:"An error occurred",variant:"destructive"})}},I=async e=>{if(S)try{if(!(await fetch("/api/groups/".concat(S.id,"/members/").concat(e),{method:"DELETE"})).ok)throw Error("Failed to remove member");let r=G.find(r=>r.id===e);r&&(U(r=>r.filter(r=>r.id!==e)),$(e=>[...e,r])),b(e=>e.map(e=>e.id===S.id?{...e,membersCount:Math.max(0,e.membersCount-1)}:e)),(0,p.oR)({title:"Success",description:"Member removed successfully"})}catch(e){(0,p.oR)({title:"Error",description:e instanceof Error?e.message:"An error occurred",variant:"destructive"})}},Q=(0,t.useCallback)(()=>{k("")},[]),X=(0,t.useCallback)(()=>{R(null),O("")},[]),K=(0,t.useCallback)(()=>{R(null),U([]),$([])},[]);return j?(0,a.jsx)("div",{className:"text-center p-4",children:"Loading..."}):(0,a.jsxs)("div",{className:"space-y-4 p-6 bg-gray-100 rounded-lg",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center",children:[(0,a.jsx)(o.p,{type:"text",placeholder:"Rechercher un groupe...",value:N,onChange:e=>v(e.target.value),className:"max-w-xs bg-white text-gray-900 border-gray-300"}),(0,a.jsxs)(y,{open:w,onOpenChange:C,onAfterClose:Q,triggerComponent:(0,a.jsxs)(c.$,{className:"bg-blue-600 hover:bg-blue-700 text-white",children:[(0,a.jsx)(l.A,{className:"mr-2 h-4 w-4"})," Ajouter un groupe"]}),className:"bg-white text-black border border-gray-300",children:[(0,a.jsx)(h.c7,{children:(0,a.jsx)(h.L3,{className:"text-gray-900",children:"Nouveau Groupe"})}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.J,{htmlFor:"groupName",className:"text-gray-900",children:"Nom du groupe"}),(0,a.jsx)(o.p,{id:"groupName",value:E,onChange:e=>k(e.target.value),placeholder:"Entrez le nom du groupe",className:"bg-white text-gray-900 border-gray-300"})]}),(0,a.jsx)(c.$,{onClick:P,className:"w-full bg-blue-600 hover:bg-blue-700 text-white",children:"Cr\xe9er le groupe"})]})]})]}),(0,a.jsxs)(i.XI,{className:"bg-white border border-gray-300 rounded-md",children:[(0,a.jsx)(i.A0,{className:"bg-gray-50",children:(0,a.jsxs)(i.Hj,{children:[(0,a.jsx)(i.nd,{className:"text-gray-900",children:"Nom"}),(0,a.jsx)(i.nd,{className:"text-gray-900",children:"Chemin"}),(0,a.jsx)(i.nd,{className:"text-gray-900",children:"Membres"}),(0,a.jsx)(i.nd,{className:"text-right text-gray-900",children:"Actions"})]})}),(0,a.jsx)(i.BF,{children:s.filter(e=>e.name.toLowerCase().includes(N.toLowerCase())||e.path.toLowerCase().includes(N.toLowerCase())).map(e=>(0,a.jsxs)(i.Hj,{className:"hover:bg-gray-50 border-t border-gray-200",children:[(0,a.jsx)(i.nA,{className:"text-gray-900 font-medium",children:e.name}),(0,a.jsx)(i.nA,{className:"text-gray-900",children:e.path}),(0,a.jsx)(i.nA,{className:"text-gray-900",children:e.membersCount}),(0,a.jsx)(i.nA,{className:"text-right",children:(0,a.jsxs)(g.rI,{children:[(0,a.jsx)(g.ty,{asChild:!0,children:(0,a.jsxs)(c.$,{variant:"ghost",className:"h-8 w-8 p-0",children:[(0,a.jsx)("span",{className:"sr-only",children:"Open menu"}),(0,a.jsx)(n.A,{className:"h-4 w-4"})]})}),(0,a.jsxs)(g.SQ,{align:"end",className:"bg-white border border-gray-300",children:[(0,a.jsx)(g.lp,{className:"text-gray-900",children:"Actions"}),(0,a.jsxs)(g._2,{onClick:()=>q(e.id),className:"text-gray-900 hover:bg-gray-100",children:[(0,a.jsx)(d.A,{className:"mr-2 h-4 w-4"}),"Modifier"]}),(0,a.jsxs)(g._2,{onClick:()=>B(e.id),className:"text-gray-900 hover:bg-gray-100",children:[(0,a.jsx)(m.A,{className:"mr-2 h-4 w-4"}),"G\xe9rer les membres"]}),(0,a.jsx)(g.mB,{}),(0,a.jsxs)(g._2,{onClick:()=>z(e.id),className:"text-red-600 hover:bg-red-50 hover:text-red-700",children:[(0,a.jsx)(u.A,{className:"mr-2 h-4 w-4"}),"Supprimer"]})]})]})})]},e.id))})]}),(0,a.jsxs)(y,{open:A,onOpenChange:L,onAfterClose:X,className:"bg-white text-black border border-gray-300",children:[(0,a.jsx)(h.c7,{children:(0,a.jsx)(h.L3,{className:"text-gray-900",children:"Modifier le groupe"})}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(x.J,{htmlFor:"modifiedGroupName",className:"text-gray-900",children:"Nom du groupe"}),(0,a.jsx)(o.p,{id:"modifiedGroupName",value:M,onChange:e=>O(e.target.value),className:"bg-white text-gray-900 border-gray-300",autoFocus:!0})]}),(0,a.jsx)(c.$,{onClick:H,className:"w-full bg-blue-600 hover:bg-blue-700 text-white",children:"Mettre \xe0 jour"})]})]}),(0,a.jsxs)(y,{open:T,onOpenChange:F,onAfterClose:K,className:"sm:max-w-[600px] max-h-[90vh] overflow-y-auto bg-white text-black border border-gray-300",children:[(0,a.jsx)(h.c7,{children:(0,a.jsxs)(h.L3,{className:"text-gray-900",children:["G\xe9rer les membres - ",null==S?void 0:S.name]})}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-medium mb-2 text-gray-900",children:"Membres actuels"}),0===G.length?(0,a.jsx)("p",{className:"text-gray-600",children:"Ce groupe n'a pas de membres."}):(0,a.jsx)("div",{className:"space-y-2",children:G.map(e=>(0,a.jsxs)("div",{className:"flex items-center justify-between p-2 bg-gray-50 rounded-md border border-gray-200",children:[(0,a.jsxs)("div",{className:"text-gray-900",children:[(0,a.jsx)("div",{className:"font-medium",children:e.username}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.firstName," ",e.lastName," (",e.email,")"]})]}),(0,a.jsx)(c.$,{variant:"outline",size:"sm",onClick:()=>I(e.id),className:"text-red-600 hover:bg-red-50 hover:text-red-700 border-red-200",children:(0,a.jsx)(u.A,{className:"h-4 w-4"})})]},e.id))})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"text-lg font-medium mb-2 text-gray-900",children:"Ajouter des membres"}),(0,a.jsx)(o.p,{type:"text",placeholder:"Rechercher un utilisateur...",value:N,onChange:e=>v(e.target.value),className:"mb-2 bg-white text-gray-900 border-gray-300"}),(0,a.jsx)("div",{className:"space-y-2 max-h-[250px] overflow-y-auto",children:_.filter(e=>!G.some(r=>r.id===e.id)&&(e.username.toLowerCase().includes(N.toLowerCase())||e.email.toLowerCase().includes(N.toLowerCase())||e.firstName.toLowerCase().includes(N.toLowerCase())||e.lastName.toLowerCase().includes(N.toLowerCase()))).map(e=>(0,a.jsxs)("div",{className:"flex items-center justify-between p-2 bg-gray-50 rounded-md border border-gray-200",children:[(0,a.jsxs)("div",{className:"text-gray-900",children:[(0,a.jsx)("div",{className:"font-medium",children:e.username}),(0,a.jsxs)("div",{className:"text-sm text-gray-600",children:[e.firstName," ",e.lastName," (",e.email,")"]})]}),(0,a.jsx)(c.$,{variant:"outline",size:"sm",onClick:()=>D(e.id),className:"text-green-600 hover:bg-green-50 hover:text-green-700 border-green-200",children:(0,a.jsx)(l.A,{className:"h-4 w-4"})})]},e.id))})]})]})]})]})}},84616:(e,r,s)=>{s.d(r,{A:()=>a});let a=(0,s(19946).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])}}]);