(()=>{var a={};a.id=3414,a.ids=[3414],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},15261:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{DELETE:()=>k,GET:()=>h,PATCH:()=>j,PUT:()=>i});var e=c(10641),f=c(25224),g=a([f]);async function h(a){try{let{searchParams:b}=new URL(a.url),c=b.get("id"),d=b.get("email"),g=b.get("all");if("true"===g){let a=(await f.A.query(`
        SELECT 
          id, title, first_name, last_name, email, phone_number,
          access_level, photo, designation, status, last_login,
          signup_date, tickets_submitted, content_posted, created_at
        FROM users 
        ORDER BY created_at DESC
      `)).rows.map(a=>({id:a.id,title:a.title,firstName:a.first_name,lastName:a.last_name,email:a.email,phoneNumber:a.phone_number,accessLevel:a.access_level,photo:a.photo,designation:a.designation,status:a.status,lastLogin:a.last_login,signupDate:a.signup_date,ticketsSubmitted:a.tickets_submitted,contentPosted:a.content_posted,createdAt:a.created_at}));return e.NextResponse.json({users:a})}if(c){let a=await f.A.query(`SELECT 
          id, title, first_name, last_name, email, phone_number,
          access_level, photo, designation, status, last_login,
          signup_date, tickets_submitted, content_posted, created_at
         FROM users WHERE id = $1`,[c]);if(0===a.rows.length)return e.NextResponse.json({error:"User not found"},{status:404});let b=a.rows[0],d={id:b.id,title:b.title,firstName:b.first_name,lastName:b.last_name,email:b.email,phoneNumber:b.phone_number,accessLevel:b.access_level,photo:b.photo,designation:b.designation,status:b.status,lastLogin:b.last_login,signupDate:b.signup_date,ticketsSubmitted:b.tickets_submitted,contentPosted:b.content_posted,createdAt:b.created_at};return e.NextResponse.json({user:d})}if(d){let a=await f.A.query(`SELECT 
          id, title, first_name, last_name, email, phone_number,
          access_level, photo, designation, status, last_login,
          signup_date, tickets_submitted, content_posted, created_at
         FROM users WHERE email = $1`,[d.toLowerCase()]);if(0===a.rows.length)return e.NextResponse.json({error:"User not found"},{status:404});let b=a.rows[0],c={id:b.id,title:b.title,firstName:b.first_name,lastName:b.last_name,email:b.email,phoneNumber:b.phone_number,accessLevel:b.access_level,photo:b.photo,designation:b.designation,status:b.status,lastLogin:b.last_login,signupDate:b.signup_date,ticketsSubmitted:b.tickets_submitted,contentPosted:b.content_posted,createdAt:b.created_at};return e.NextResponse.json({user:c})}return e.NextResponse.json({error:"ID or email parameter is required"},{status:400})}catch(a){return console.error("Get user error:",a),e.NextResponse.json({error:"Internal server error"},{status:500})}}async function i(a){try{let{searchParams:b}=new URL(a.url),c=b.get("id");if(!c)return e.NextResponse.json({error:"User ID is required"},{status:400});let d=await a.json();console.log("Received update request:",{id:c,updates:d});let g=[],h=[],i=1;if(h.push(c),["title","firstName","lastName","phoneNumber","photo","designation","email"].forEach(a=>{if(void 0!==d[a]){let b=a;"firstName"===a&&(b="first_name"),"lastName"===a&&(b="last_name"),"phoneNumber"===a&&(b="phone_number"),g.push(`${b} = $${++i}`),h.push(d[a]),console.log(`Mapping ${a} -> ${b} = ${d[a]}`)}}),g.push("updated_at = CURRENT_TIMESTAMP"),0===g.length)return e.NextResponse.json({error:"No valid fields to update"},{status:400});let j=`
      UPDATE users 
      SET ${g.join(", ")}
      WHERE id = $1
      RETURNING id, title, first_name, last_name, email, phone_number,
                access_level, photo, designation, status, last_login,
                signup_date, tickets_submitted, content_posted
    `;console.log("Final query:",j),console.log("Query values:",h);let k=await f.A.query(j,h);if(0===k.rows.length)return e.NextResponse.json({error:"User not found"},{status:404});let l=k.rows[0],m={id:l.id,title:l.title,firstName:l.first_name,lastName:l.last_name,email:l.email,phoneNumber:l.phone_number,accessLevel:l.access_level,photo:l.photo,designation:l.designation,status:l.status,lastLogin:l.last_login,signupDate:l.signup_date,ticketsSubmitted:l.tickets_submitted,contentPosted:l.content_posted};return console.log("Update successful:",m),e.NextResponse.json({message:"User updated successfully",user:m})}catch(a){return console.error("Update user error:",a),e.NextResponse.json({error:"Internal server error during update"},{status:500})}}async function j(a){try{let{searchParams:b}=new URL(a.url),c=b.get("id");if(!c)return e.NextResponse.json({error:"User ID is required"},{status:400});let d=await a.json();console.log("PATCH update request:",{id:c,updates:d});let g=[],h=[],i=1;if(h.push(c),["status","accessLevel"].forEach(a=>{if(void 0!==d[a]){let b="accessLevel"===a?"access_level":a;g.push(`${b} = $${++i}`),h.push(d[a]),console.log(`PATCH mapping ${a} -> ${b} = ${d[a]}`)}}),g.push("updated_at = CURRENT_TIMESTAMP"),0===g.length)return e.NextResponse.json({error:"No valid fields to update"},{status:400});let j=`
      UPDATE users 
      SET ${g.join(", ")}
      WHERE id = $1
      RETURNING id, title, first_name, last_name, email, phone_number,
                access_level, photo, designation, status, last_login,
                signup_date, tickets_submitted, content_posted
    `;console.log("PATCH query:",j),console.log("PATCH values:",h);let k=await f.A.query(j,h);if(0===k.rows.length)return e.NextResponse.json({error:"User not found"},{status:404});let l=k.rows[0],m={id:l.id,title:l.title,firstName:l.first_name,lastName:l.last_name,email:l.email,phoneNumber:l.phone_number,accessLevel:l.access_level,photo:l.photo,designation:l.designation,status:l.status,lastLogin:l.last_login,signupDate:l.signup_date,ticketsSubmitted:l.tickets_submitted,contentPosted:l.content_posted};return console.log("PATCH successful:",m),e.NextResponse.json({message:"User updated successfully",user:m})}catch(a){return console.error("Update user error:",a),e.NextResponse.json({error:"Internal server error during update"},{status:500})}}async function k(a){try{let{searchParams:b}=new URL(a.url),c=b.get("id");if(!c)return e.NextResponse.json({error:"User ID is required"},{status:400});console.log("DELETE request for user:",c);let d=await f.A.query("DELETE FROM users WHERE id = $1 RETURNING id, email",[c]);if(0===d.rows.length)return e.NextResponse.json({error:"User not found"},{status:404});return console.log("DELETE successful:",d.rows[0]),e.NextResponse.json({message:"User deleted successfully",deletedUser:{id:d.rows[0].id,email:d.rows[0].email}})}catch(a){return console.error("Delete user error:",a),e.NextResponse.json({error:"Internal server error during deletion"},{status:500})}}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},25224:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{A:()=>g});var e=c(64939),f=a([e]);let g=new(e=(f.then?(await f)():f)[0]).Pool({user:process.env.DB_USER,host:process.env.DB_HOST,database:process.env.DB_NAME,password:process.env.DB_PASSWORD,port:parseInt(process.env.DB_PORT||"5432")});d()}catch(a){d(a)}})},26942:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{handler:()=>x,patchFetch:()=>w,routeModule:()=>y,serverHooks:()=>B,workAsyncStorage:()=>z,workUnitAsyncStorage:()=>A});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(15261),v=a([u]);u=(v.then?(await v)():v)[0];let y=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/api/auth/user/route",pathname:"/api/auth/user",filename:"route",bundlePath:"app/api/auth/user/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"/Users/kanyinsola/Documents/koh/kohfrontline/src/app/api/auth/user/route.ts",nextConfigOutput:"standalone",userland:u}),{workAsyncStorage:z,workUnitAsyncStorage:A,serverHooks:B}=y;function w(){return(0,g.patchFetch)({workAsyncStorage:z,workUnitAsyncStorage:A})}async function x(a,b,c){var d;let e="/api/auth/user/route";"/index"===e&&(e="/");let g=await y.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:z,routerServerContext:A,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,resolvedPathname:D}=g,E=(0,j.normalizeAppPath)(e),F=!!(z.dynamicRoutes[E]||z.routes[D]);if(F&&!x){let a=!!z.routes[D],b=z.dynamicRoutes[E];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let G=null;!F||y.isDev||x||(G=D,G="/index"===G?"/":G);let H=!0===y.isDev||!F,I=F&&!H,J=a.method||"GET",K=(0,i.getTracer)(),L=K.getActiveScopeSpan(),M={params:v,prerenderManifest:z,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:H,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:I,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>y.onRequestError(a,b,d,A)},sharedContext:{buildId:u}},N=new k.NodeNextRequest(a),O=new k.NodeNextResponse(b),P=l.NextRequestAdapter.fromNodeNextRequest(N,(0,l.signalFromNodeResponse)(b));try{let d=async c=>y.handle(P,M).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=K.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${J} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${J} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&B&&C&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=M.renderOpts.fetchMetrics;let i=M.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=M.renderOpts.collectedTags;if(!F)return await (0,o.I)(N,O,e,M.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==M.renderOpts.collectedRevalidate&&!(M.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&M.renderOpts.collectedRevalidate,d=void 0===M.renderOpts.collectedExpire||M.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:M.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await y.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})},A),b}},l=await y.handleResponse({req:a,nextConfig:w,cacheKey:G,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:z,isRoutePPREnabled:!1,isOnDemandRevalidate:B,revalidateOnlyGenerated:C,responseGenerator:k,waitUntil:c.waitUntil});if(!F)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",B?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&F||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(N,O,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};L?await g(L):await K.withPropagatedContext(a.headers,()=>K.trace(m.BaseServerSpan.handleRequest,{spanName:`${J} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":J,"http.target":a.url}},g))}catch(b){if(L||b instanceof s.NoFallbackError||await y.onRequestError(a,b,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:I,isOnDemandRevalidate:B})}),F)throw b;return await (0,o.I)(N,O,new Response(null,{status:500})),null}}d()}catch(a){d(a)}})},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},64939:a=>{"use strict";a.exports=import("pg")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},96487:()=>{}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[4586,1692],()=>b(b.s=26942));module.exports=c})();