NeahNew/.next/server/app/api/missions/[missionId]/route.js
2025-05-06 23:01:34 +02:00

1 line
6.5 KiB
JavaScript

"use strict";(()=>{var e={};e.id=7699,e.ids=[7699],e.modules={3295:e=>{e.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:e=>{e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:e=>{e.exports=require("querystring")},12412:e=>{e.exports=require("assert")},21820:e=>{e.exports=require("os")},27910:e=>{e.exports=require("stream")},28354:e=>{e.exports=require("util")},29021:e=>{e.exports=require("fs")},29294:e=>{e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:e=>{e.exports=require("path")},44870:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},50796:(e,r,s)=>{s.r(r),s.d(r,{patchFetch:()=>j,routeModule:()=>f,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>q});var t={};s.r(t),s.d(t,{DELETE:()=>h,GET:()=>g,PUT:()=>x});var i=s(96559),o=s(48088),n=s(37719),a=s(32190),l=s(19854),u=s(26690),d=s(79464),p=s(22039),c=s(60297);async function m(e){let r=await (0,l.getServerSession)(u.N);return r?.user?.id?{authorized:!0,userId:r.user.id}:(console.error("Unauthorized access attempt:",{url:e.url,method:e.method,headers:Object.fromEntries(e.headers)}),{authorized:!1,userId:null})}async function g(e,r){let s=await r.params;try{let{authorized:r,userId:t}=await m(e);if(!r||!t)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{missionId:i}=s;if(!i)return a.NextResponse.json({error:"Mission ID is required"},{status:400});let o=await d.z.mission.findFirst({where:{id:i,OR:[{creatorId:t},{missionUsers:{some:{userId:t}}}]},include:{creator:{select:{id:!0,email:!0}},missionUsers:{select:{id:!0,role:!0,user:{select:{id:!0,email:!0}}}},attachments:{select:{id:!0,filename:!0,filePath:!0,fileType:!0,fileSize:!0,createdAt:!0},orderBy:{createdAt:"desc"}}}});if(!o)return a.NextResponse.json({error:"Mission not found or access denied"},{status:404});let n={...o,logoUrl:o.logo?`/api/missions/image/${o.logo}`:null,attachments:o.attachments.map(e=>({...e,publicUrl:`/api/missions/image/${e.filePath}`}))};return a.NextResponse.json(n)}catch(e){return console.error("Error retrieving mission:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function x(e,r){let s=await r.params;try{let{authorized:r,userId:t}=await m(e);if(!r||!t)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{missionId:i}=s;if(!i)return a.NextResponse.json({error:"Mission ID is required"},{status:400});if(!await d.z.mission.findFirst({where:{id:i,OR:[{creatorId:t},{missionUsers:{some:{userId:t,role:{in:["gardien-temps","gardien-parole"]}}}}]}}))return a.NextResponse.json({error:"Mission not found or not authorized to update"},{status:404});let{name:o,logo:n,oddScope:l,niveau:u,intention:p,missionType:c,donneurDOrdre:g,projection:x,services:h,participation:f,profils:w,guardians:q,volunteers:y}=await e.json(),j=await d.z.mission.update({where:{id:i},data:{name:o,logo:n,oddScope:l||void 0,niveau:u,intention:p,missionType:c,donneurDOrdre:g,projection:x,services:h||void 0,participation:f,profils:w||void 0}});if(q){(await d.z.missionUser.findMany({where:{missionId:i,role:{in:["gardien-temps","gardien-parole","gardien-memoire"]}}})).length>0&&await d.z.missionUser.deleteMany({where:{missionId:i,role:{in:["gardien-temps","gardien-parole","gardien-memoire"]}}});let e=["gardien-temps","gardien-parole","gardien-memoire"],r=Object.entries(q).filter(([r,s])=>e.includes(r)&&s).map(([e,r])=>({role:e,userId:r,missionId:i}));r.length>0&&await d.z.missionUser.createMany({data:r})}if(y&&((await d.z.missionUser.findMany({where:{missionId:i,role:"volontaire"}})).length>0&&await d.z.missionUser.deleteMany({where:{missionId:i,role:"volontaire"}}),y.length>0)){let e=y.map(e=>({role:"volontaire",userId:e,missionId:i}));await d.z.missionUser.createMany({data:e})}return a.NextResponse.json({success:!0,mission:{id:j.id,name:j.name,updatedAt:j.updatedAt}})}catch(e){return console.error("Error updating mission:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function h(e,r){let s=await r.params;try{let{authorized:r,userId:t}=await m(e);if(!r||!t)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{missionId:i}=s;if(!i)return a.NextResponse.json({error:"Mission ID is required"},{status:400});let o=await d.z.mission.findFirst({where:{id:i,creatorId:t},include:{attachments:!0}});if(!o)return a.NextResponse.json({error:"Mission not found or not authorized to delete"},{status:404});if(o.logo)try{await (0,p.fU)(o.logo)}catch(e){console.error("Error deleting mission logo:",e)}try{let e=o.leantimeProjectId?parseInt(o.leantimeProjectId,10):void 0,r=o.outlineCollectionId,s=o.rocketChatChannelId,t=o.giteaRepositoryUrl;if(e||r||s||t){console.log(`Rolling back integrations for mission ${i}...`);let o=new c.a;await o.rollbackIntegrations(e,r,s,t),console.log(`Successfully rolled back integrations for mission ${i}`)}else console.log(`No integrations to clean up for mission ${i}`)}catch(e){console.error("Error cleaning up integrations:",e)}return await d.z.mission.delete({where:{id:i}}),a.NextResponse.json({success:!0})}catch(e){return console.error("Error deleting mission:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}let f=new i.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/api/missions/[missionId]/route",pathname:"/api/missions/[missionId]",filename:"route",bundlePath:"app/api/missions/[missionId]/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/missions/[missionId]/route.ts",nextConfigOutput:"",userland:t}),{workAsyncStorage:w,workUnitAsyncStorage:q,serverHooks:y}=f;function j(){return(0,n.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:q})}},55511:e=>{e.exports=require("crypto")},55591:e=>{e.exports=require("https")},57075:e=>{e.exports=require("node:stream")},63033:e=>{e.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73496:e=>{e.exports=require("http2")},74075:e=>{e.exports=require("zlib")},79428:e=>{e.exports=require("buffer")},79551:e=>{e.exports=require("url")},81630:e=>{e.exports=require("http")},83997:e=>{e.exports=require("tty")},91043:e=>{e.exports=require("@aws-sdk/client-s3")},94735:e=>{e.exports=require("events")},96330:e=>{e.exports=require("@prisma/client")}};var r=require("../../../../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[4243,5419,580,8794,762,4612,1046,6300,297],()=>s(50796));module.exports=t})();