![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/private_html/.next/server/pages/api/chat/ |
"use strict";(()=>{var e={};e.id=5740,e.ids=[5740],e.modules={4722:e=>{e.exports=require("next-auth/react")},8732:e=>{e.exports=require("react/jsx-runtime")},16382:e=>{e.exports=require("next-auth/providers/credentials")},22326:e=>{e.exports=require("react-dom")},27910:e=>{e.exports=require("stream")},29021:e=>{e.exports=require("fs")},31493:(e,a,r)=>{r.d(a,{Os:()=>i}),r(76760);let n={public:{SUPERADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},ADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},LAWYER:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},SECRETARY:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},CLERK:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},ASSISTANT:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},USER:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1}},legal_support:{SUPERADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},ADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},LAWYER:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},SECRETARY:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},CLERK:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},ASSISTANT:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!1,canDelete:!1},USER:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1}},admin:{SUPERADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},ADMIN:{canJoin:!0,canRead:!0,canWrite:!0,canManage:!0,canDelete:!0},LAWYER:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1},SECRETARY:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1},CLERK:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1},ASSISTANT:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1},USER:{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1}}},t={public:["G\xe9n\xe9ral","General","Announcements","E.D. d'Amos","E.D. de Rimouski","E.D. de Qu\xe9bec – F","E.D. de Qu\xe9bec – M","E.D. de Baie-Comeau","E.D. de Sept-\xceles","E.D. de Sherbrooke","E.D. de New Carlisle","E.D. de Perc\xe9","E.D. de Havre-Aubert","E.D. de Hull","E.D. de Saint-J\xe9r\xf4me","E.L. de Laval","E.D. de Trois-Rivi\xe8res","E.D. de Sorel-Tracy","E.D. de Montr\xe9al (Bordeaux)","E.D. de Rivi\xe8re-des-Prairies","E.D. de Roberval","Bordeaux (Montr\xe9al)","Rivi\xe8re-des-Prairies (Montr\xe9al)","Leclerc (Laval)","Orsainville (Qu\xe9bec) - Hommes","Orsainville (Qu\xe9bec) - Femmes","Baie-Comeau","Sept-\xceles","Port-Cartier","Sherbrooke","Trois-Rivi\xe8res","Saint-J\xe9r\xf4me","Hull (Gatineau)","Roberval","Rimouski","Sorel-Tracy","Saint-Hyacinthe","Amos","New Carlisle","Perc\xe9","Havre-Aubert (\xceles-de-la-Madeleine)","Maison Tanguay (Femmes)","Joliette (Femmes F\xe9d\xe9ral)","Cit\xe9-des-Prairies (Jeunes)","Archambault (F\xe9d\xe9ral)","Cowansville (F\xe9d\xe9ral)","Donnacona (F\xe9d\xe9ral)","La Macaza (F\xe9d\xe9ral)","Sainte-Anne-des-Plaines (F\xe9d\xe9ral)","Aide Juridique G\xe9n\xe9rale","Transferts et Transport","Visites Familiales","Lib\xe9ration Conditionnelle","Soins M\xe9dicaux","Support Communautaire","R\xe9int\xe9gration Sociale"],legal_support:["Legal Support"],admin:["Admin","System","Moderation"]};function i(e,a,r="read"){let c=function(e,a){let r=n[function(e){let a=e.toLowerCase();for(let[e,r]of Object.entries(t))if(r.some(e=>a.includes(e.toLowerCase())))return e;return"public"}(a)];return r?r[e]||{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1}:n.public[e]||{canJoin:!1,canRead:!1,canWrite:!1,canManage:!1,canDelete:!1}}(e,a);switch(r){case"read":return c.canRead;case"write":return c.canWrite;case"manage":return c.canManage;case"delete":return c.canDelete;default:return!1}}},40361:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},65542:e=>{e.exports=require("next-auth")},74075:e=>{e.exports=require("zlib")},74729:e=>{e.exports=require("bcryptjs")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},82015:e=>{e.exports=require("react")},85815:(e,a,r)=>{r.r(a),r.d(a,{config:()=>R,default:()=>p,routeModule:()=>g});var n={};r.r(n),r.d(n,{default:()=>m});var t=r(33480),i=r(8667),c=r(86435),o=r(65542),s=r(41822),l=r(76760),d=r(31493),u=r(16062);async function m(e,a){let r=await (0,o.getServerSession)(e,a,s.N);if(!r?.user)return a.status(401).json({error:"Unauthorized"});if("GET"===e.method)try{console.log(`[API] Fetching rooms for user: ${r.user.name} (${r.user.role})`);let e=await l.z.chatRoom.findMany({include:{participants:{include:{user:{select:{id:!0,name:!0,email:!0,role:!0,profilePicture:!0,title:!0,specialization:!0,availability:!0,lastActive:!0,bio:!0}}}},messages:{take:1,orderBy:{createdAt:"desc"},include:{user:{select:{id:!0,name:!0,role:!0,profilePicture:!0,title:!0,specialization:!0,availability:!0,lastActive:!0,bio:!0}}}},_count:{select:{messages:!0}}},orderBy:{updatedAt:"desc"}});console.log(`[API] Found ${e.length} total rooms`);let n=e.filter(e=>(0,d.Os)(r.user.role,e.name,"read"));console.log(`[API] User can access ${n.length} rooms`);let t=n.map(e=>({...e,lastMessage:e.messages[0]||null}));return a.status(200).json(t)}catch(e){return console.error("[API] Error fetching chat rooms:",e),a.status(500).json({error:"Failed to fetch chat rooms"})}if("POST"===e.method)try{let{roomId:n,name:t}=e.body;if(n){if(await l.z.chatParticipant.findFirst({where:{userId:r.user.id,chatRoomId:n}}))return a.status(200).json({message:"Already in room"});return await l.z.chatParticipant.create({data:{userId:r.user.id,chatRoomId:n,role:"MEMBER"}}),a.status(200).json({message:"Joined room successfully"})}if(t){if(!(0,u.jm)(r)&&"ADMIN"!==r.user.role)return a.status(403).json({error:"Only admins can create chat rooms"});let e=await l.z.chatRoom.create({data:{name:t,type:"GROUP",participants:{create:{userId:r.user.id,role:"ADMIN"}},createdBy:{connect:{id:r.user.id}}},include:{participants:{include:{user:{select:{id:!0,name:!0,email:!0,role:!0,profilePicture:!0,title:!0,specialization:!0,availability:!0,lastActive:!0,bio:!0}}}},_count:{select:{messages:!0}}}});return a.status(201).json({...e,participants:e.participants.map(e=>({user:e.user,role:e.role}))})}return a.status(400).json({error:"Room ID or name is required"})}catch(e){return console.error("Error joining/creating chat room:",e),a.status(500).json({error:"Failed to join/create chat room"})}if("DELETE"===e.method){if(!(0,u.jm)(r)&&"ADMIN"!==r.user.role)return a.status(403).json({error:"Only admins can delete chat rooms."});let{roomId:n}=e.query;if(!n||"string"!=typeof n)return a.status(400).json({error:"Room ID is required."});try{return await l.z.$transaction([l.z.message.deleteMany({where:{chatRoomId:n}}),l.z.chatParticipant.deleteMany({where:{chatRoomId:n}}),l.z.chatRoom.delete({where:{id:n}})]),a.status(200).json({message:"Room deleted successfully."})}catch(e){return console.error(`Failed to delete room ${n}:`,e),a.status(500).json({error:"Failed to delete room."})}}return a.status(405).json({error:"Method not allowed"})}let p=(0,c.M)(n,"default"),R=(0,c.M)(n,"config"),g=new t.PagesAPIRouteModule({definition:{kind:i.A.PAGES_API,page:"/api/chat/rooms",pathname:"/api/chat/rooms",bundlePath:"",filename:""},userland:n})},96330:e=>{e.exports=require("@prisma/client")}};var a=require("../../../webpack-api-runtime.js");a.C(e);var r=e=>a(a.s=e),n=a.X(0,[7332,6062],()=>r(85815));module.exports=n})();