"use strict";(()=>{var e={};e.id=9189,e.ids=[9189],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")},14182:(e,t,r)=>{r.d(t,{$R:()=>i,Ui:()=>u,XB:()=>a,XR:()=>l,YE:()=>s,ZT:()=>d,b4:()=>c,oD:()=>n});var o=r(91043);let s={endpoint:"https://dome-api.slm-lab.net",region:"us-east-1",bucket:process.env.S3_BUCKET||"pages",accessKey:"4aBT4CMb7JIMMyUtp4Pl",secretKey:"HGn39XhCIlqOjmDVzRK9MED2Fci2rYvDDgbLFElg"},n=new o.S3Client({region:s.region,endpoint:s.endpoint,credentials:{accessKeyId:s.accessKey,secretAccessKey:s.secretKey},forcePathStyle:!0});async function i(e,t,r){let i=new o.PutObjectCommand({Bucket:s.bucket,Key:e,Body:"string"==typeof t?Buffer.from(t,"utf-8"):t,ContentType:r||"text/plain"});return await n.send(i),{key:e}}async function a(e){try{let t=new o.GetObjectCommand({Bucket:s.bucket,Key:e}),r=await n.send(t);if(!r.Body)return null;let i=[];for await(let e of r.Body)i.push(e);return Buffer.concat(i).toString("utf-8")}catch(e){return console.error("Error getting object content:",e),null}}async function l(e){let t=new o.DeleteObjectCommand({Bucket:s.bucket,Key:e});await n.send(t)}async function u(e,t){let r=`user-${e}/${t}/`,i=new o.ListObjectsV2Command({Bucket:s.bucket,Prefix:r,Delimiter:"/"});return((await n.send(i)).Contents||[]).filter(e=>e.Key&&!e.Key.endsWith("/")&&!e.Key.includes(".placeholder")).map(e=>({key:e.Key,name:e.Key.split("/").pop()||e.Key,size:e.Size,lastModified:e.LastModified}))}function c(e,t){if(!e)return"";if(e.startsWith("http"))return e;let r=e.startsWith("/")?e.substring(1):e,o=s.endpoint?.replace(/\/$/,""),n=t||s.bucket;return o?`${o}/${n}/${r}`:r}async function d(e){for(let t of["notes","diary","health","contacts"])try{let r=`user-${e}/${t}/`;await i(r,"","application/x-directory");let o=`user-${e}/${t}/.placeholder`;await i(o,"Folder placeholder","text/plain"),console.log(`Created folder: ${r}`)}catch(r){console.error(`Error creating folder ${t} for user ${e}:`,r)}}},24247:(e,t,r)=>{r.r(t),r.d(t,{patchFetch:()=>j,routeModule:()=>h,serverHooks:()=>w,workAsyncStorage:()=>y,workUnitAsyncStorage:()=>x});var o={};r.r(o),r.d(o,{GET:()=>g,POST:()=>m});var s=r(96559),n=r(48088),i=r(37719),a=r(32190),l=r(19854),u=r(26690),c=r(79464),d=r(22039),p=r(14182);async function f(e){let t=await (0,l.getServerSession)(u.N);return t?.user?.id?{authorized:!0,userId:t.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){try{let t,{authorized:r,userId:o}=await f(e);if(!r||!o)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:s}=new URL(e.url),n=s.get("missionId"),i=s.get("type"),l=s.get("filename");if(!n||!i||!l)return a.NextResponse.json({error:"Missing required parameters",required:{missionId:!0,type:!0,filename:!0},received:{missionId:!!n,type:!!i,filename:!!l}},{status:400});let u=await c.z.mission.findUnique({where:{id:n},select:{id:!0,creatorId:!0}});if(!u)return a.NextResponse.json({error:"Mission not found"},{status:404});if(u.creatorId!==o)return a.NextResponse.json({error:"Not authorized to upload to this mission"},{status:403});if("logo"===i){let e=l.substring(l.lastIndexOf("."));t=await (0,d.nq)(o,n,e)}else{if("attachment"!==i)return a.NextResponse.json({error:"Invalid upload type"},{status:400});t=await (0,d.dm)(o,n,l)}return a.NextResponse.json(t)}catch(e){return console.error("Error generating upload URL:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}async function m(e){console.log("=== File upload request received ===");try{console.log("Checking authentication...");let{authorized:t,userId:r}=await f(e);if(!t||!r)return console.log("Authentication failed"),a.NextResponse.json({error:"Unauthorized"},{status:401});console.log("User authenticated:",r),console.log("Parsing form data...");let o=await e.formData(),s=o.get("missionId"),n=o.get("type"),i=o.get("file");if(console.log("Form data received:",{missionId:s,type:n,fileExists:!!i,fileName:i?.name,fileSize:i?.size,fileType:i?.type}),!s||!n||!i)return console.log("Missing required fields:",{missionId:!!s,type:!!n,file:!!i}),a.NextResponse.json({error:"Missing required fields",required:{missionId:!0,type:!0,file:!0},received:{missionId:!!s,type:!!n,file:!!i}},{status:400});console.log("Verifying mission access...");let l=await c.z.mission.findUnique({where:{id:s},select:{id:!0,creatorId:!0}});if(!l)return console.log("Mission not found:",s),a.NextResponse.json({error:"Mission not found"},{status:404});if(l.creatorId!==r)return console.log("User not authorized to upload to this mission",{userId:r,creatorId:l.creatorId}),a.NextResponse.json({error:"Not authorized to upload to this mission"},{status:403});if(console.log("Mission access verified"),"logo"===n){console.log("Processing logo upload...");try{let{filePath:e}=await (0,d.vB)(r,s,i);console.log("Logo uploaded successfully to path:",e);let t=`/api/missions/image/${e.replace("missions/","")}`;return console.log("Public URL for logo:",t),console.log("Updating mission record with logo path..."),await c.z.mission.update({where:{id:s},data:{logo:e}}),console.log("Mission record updated"),a.NextResponse.json({success:!0,filePath:e,publicUrl:t})}catch(e){return console.error("Error in logo upload process:",e),a.NextResponse.json({error:"Logo upload failed",details:e instanceof Error?e.message:String(e)},{status:500})}}if("attachment"!==n)return console.log("Invalid upload type:",n),a.NextResponse.json({error:"Invalid upload type"},{status:400});console.log("Processing attachment upload...");try{let{filename:e,filePath:t,fileType:o,fileSize:n}=await (0,d.jY)(r,s,i);console.log("Attachment uploaded successfully to path:",t);let l=(0,p.b4)(t,p.YE.bucket);console.log("Public URL for attachment:",l),console.log("Creating attachment record in database...");let u=await c.z.attachment.create({data:{filename:e,filePath:t,fileType:o,fileSize:n,missionId:s,uploaderId:r}});return console.log("Attachment record created:",u.id),a.NextResponse.json({success:!0,attachment:{id:u.id,filename:u.filename,filePath:u.filePath,publicUrl:l,fileType:u.fileType,fileSize:u.fileSize,createdAt:u.createdAt}})}catch(e){return console.error("Error in attachment upload process:",e),a.NextResponse.json({error:"Attachment upload failed",details:e instanceof Error?e.message:String(e)},{status:500})}}catch(e){return console.error("Unhandled error in upload process:",e),a.NextResponse.json({error:"Internal server error",details:e instanceof Error?e.message:String(e)},{status:500})}}let h=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/missions/upload/route",pathname:"/api/missions/upload",filename:"route",bundlePath:"app/api/missions/upload/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/missions/upload/route.ts",nextConfigOutput:"",userland:o}),{workAsyncStorage:y,workUnitAsyncStorage:x,serverHooks:w}=h;function j(){return(0,i.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:x})}},28354:e=>{e.exports=require("util")},29294:e=>{e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:e=>{e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:e=>{e.exports=require("crypto")},55591:e=>{e.exports=require("https")},63033:e=>{e.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},74075:e=>{e.exports=require("zlib")},79428:e=>{e.exports=require("buffer")},79551:e=>{e.exports=require("url")},81630:e=>{e.exports=require("http")},91043:e=>{e.exports=require("@aws-sdk/client-s3")},94735:e=>{e.exports=require("events")},96330:e=>{e.exports=require("@prisma/client")}};var t=require("../../../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[4243,5419,580,762,6300],()=>r(24247));module.exports=o})();