![]() 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/lawyer/ |
"use strict";(()=>{var e={};e.id=6028,e.ids=[6028],e.modules={8667:(e,r)=>{Object.defineProperty(r,"A",{enumerable:!0,get:function(){return i}});var i=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},15806:e=>{e.exports=require("next-auth/next")},16382:e=>{e.exports=require("next-auth/providers/credentials")},33480:(e,r,i)=>{e.exports=i(75600)},41822:(e,r,i)=>{i.d(r,{N:()=>o});var t=i(16382),a=i.n(t),n=i(74729),s=i(76760);let o={providers:[a()({name:"Credentials",credentials:{email:{label:"Email",type:"email"},password:{label:"Password",type:"password"}},async authorize(e){if(!e?.email||!e?.password)return null;try{let r=await s.z.user.findUnique({where:{email:e.email},select:{id:!0,email:!0,password:!0,role:!0,name:!0,isVerified:!0,verificationStatus:!0}});if(!r||!await (0,n.compare)(e.password,r.password))return null;let{password:i,...t}=r;return{...t,name:t.name||t.email}}catch(e){return console.error("Auth error:",e),null}}})],session:{strategy:"jwt",maxAge:2592e3},cookies:{sessionToken:{name:"__Secure-next-auth.session-token",options:{httpOnly:!0,sameSite:"lax",path:"/",secure:!0,domain:process.env.COOKIE_DOMAIN}}},pages:{signIn:"/auth/login",signOut:"/auth/login",error:"/auth/error"},callbacks:{async jwt({token:e,user:r,trigger:i}){try{if(console.log("JWT Callback - trigger:",i),console.log("JWT Callback - user:",r?{id:r.id,email:r.email,role:r.role}:null),r)e.id=r.id,e.role=r.role,e.email=r.email,e.name=r.name||r.email,e.profilePicture=r.profilePicture||void 0,e.username=r.username||void 0,e.isVerified=r.isVerified||!1,e.verificationStatus=r.verificationStatus||"PENDING",e.isImpersonating=r.isImpersonating||!1,e.originalUser=r.originalUser||void 0,console.log("JWT Callback - Updated token from user:",{id:e.id,role:e.role,isImpersonating:e.isImpersonating});else if(e.id)try{console.log("JWT Callback - Checking for impersonation sessions...");let r=await s.z.impersonationSession.findFirst({where:{originalUserId:e.id,isActive:!0,expiresAt:{gt:new Date}},include:{impersonatedUser:{select:{id:!0,email:!0,name:!0,role:!0,profilePicture:!0,username:!0}},originalUser:{select:{id:!0,email:!0,name:!0,role:!0,profilePicture:!0,username:!0}}}});if(r){let i=r.impersonatedUser;e.id=i.id,e.email=i.email,e.name=i.name||i.email,e.role=i.role,e.profilePicture=i.profilePicture||void 0,e.username=i.username||void 0,e.isImpersonating=!0,e.originalUser={id:r.originalUser.id,email:r.originalUser.email,name:r.originalUser.name||r.originalUser.email,role:r.originalUser.role,profilePicture:r.originalUser.profilePicture||void 0,username:r.originalUser.username||void 0},console.log("JWT Callback - Applied impersonation:",{originalId:e.originalUser.id,impersonatedId:e.id,originalRole:e.originalUser.role,impersonatedRole:e.role})}else e.isImpersonating&&(e.originalUser&&(console.log("JWT Callback - Restoring original user from token"),e.id=e.originalUser.id,e.email=e.originalUser.email,e.name=e.originalUser.name||e.originalUser.email,e.role=e.originalUser.role,e.profilePicture=e.originalUser.profilePicture||void 0,e.username=e.originalUser.username||void 0),e.isImpersonating=!1,e.originalUser=void 0,console.log("JWT Callback - Cleared impersonation state"))}catch(r){console.error("JWT Callback - Database error:",r),e.isImpersonating&&e.originalUser&&(console.log("JWT Callback - Error occurred, restoring original user"),e.id=e.originalUser.id,e.email=e.originalUser.email,e.name=e.originalUser.name||e.originalUser.email,e.role=e.originalUser.role,e.profilePicture=e.originalUser.profilePicture||void 0,e.username=e.originalUser.username||void 0,e.isImpersonating=!1,e.originalUser=void 0)}return console.log("JWT Callback - Final token:",{id:e.id,email:e.email,role:e.role,isImpersonating:e.isImpersonating}),e}catch(r){return console.error("JWT Callback - Error:",r),e}},async session({session:e,token:r}){try{return console.log("Session Callback - token:",{id:r.id,email:r.email,role:r.role,isImpersonating:r.isImpersonating}),console.log("Session Callback - session before:",e),r&&e.user&&(e.user.id=r.id,e.user.role=r.role,e.user.email=r.email,e.user.name=r.name,e.user.profilePicture=r.profilePicture,e.user.username=r.username,e.user.isVerified=r.isVerified,e.user.verificationStatus=r.verificationStatus,e.user.isImpersonating=r.isImpersonating,e.user.originalUser=r.originalUser),console.log("Session Callback - session after:",e),console.log("Session Callback - Final user ID:",e.user?.id),e}catch(r){return console.error("Session Callback - Error:",r),e}},redirect:async({url:e,baseUrl:r})=>e===r||e===`${r}/`||e.endsWith("/auth/login")?r:e.startsWith("/")?`${r}${e}`:e.startsWith(r)?e:r},secret:process.env.NEXTAUTH_SECRET||"3560f921b7bbf968e64fbc2835960840d184fcb95977e960a2124de6bbbed2d3",debug:!1}},54640:(e,r,i)=>{i.r(r),i.d(r,{config:()=>g,default:()=>c,routeModule:()=>m});var t={};i.r(t),i.d(t,{default:()=>u});var a=i(33480),n=i(8667),s=i(86435),o=i(15806),l=i(41822),d=i(76760);async function u(e,r){if("GET"!==e.method)return r.status(405).json({error:"Method not allowed"});try{let i=await (0,o.getServerSession)(e,r,l.N);if(!i?.user?.id)return r.status(401).json({error:"Unauthorized"});if(!["LAWYER","ADMIN","SUPERADMIN"].includes(i.user.role))return r.status(403).json({error:"Forbidden - Lawyers only"});let t=i.user.id,a=new Date,n=new Date(a.getFullYear(),a.getMonth(),1),s=new Date(a.getFullYear(),0,1),u=new Date(a.getTime()-2592e6),[c,g,m,p,f,h,A]=await Promise.all([d.z.legalCase.findMany({where:{OR:[{leadLawyerId:t},{primaryLawyerId:t},{assistantLawyerId:t},{secretaryId:t}]},select:{id:!0,status:!0,priority:!0,createdAt:!0,updatedAt:!0,estimatedValue:!0}}),d.z.consultationBooking.findMany({where:{lawyerId:t},select:{id:!0,status:!0,preferredDate:!0,totalAmount:!0,hourlyRate:!0,duration:!0,createdAt:!0}}),d.z.clientLawyerRelationship.findMany({where:{lawyerId:t},select:{id:!0,isActive:!0,totalFeePaid:!0,clientSatisfaction:!0,createdAt:!0}}),d.z.task.findMany({where:{assignedTo:t},select:{id:!0,status:!0,priority:!0,dueDate:!0,estimatedHours:!0,actualHours:!0,createdAt:!0}}),d.z.payment.findMany({where:{escrow:{lawyerId:t},status:"COMPLETED",createdAt:{gte:s}},select:{id:!0,amount:!0,createdAt:!0}}),d.z.user.count({where:{role:{in:["LAWYER","ADMIN","SUPERADMIN","ASSISTANT","PARALEGAL","SECRETARY"]},id:{not:t}}}),d.z.consultationBooking.findMany({where:{lawyerId:t,preferredDate:{gte:a},status:{in:["PENDING","CONFIRMED"]}},select:{id:!0,preferredDate:!0,preferredTime:!0,client:{select:{name:!0}}},orderBy:{preferredDate:"asc"},take:5})]),P=c.filter(e=>"ACTIVE"===e.status).length,I=c.filter(e=>"COMPLETED"===e.status).length,w=c.filter(e=>"PENDING"===e.status).length,E=g.filter(e=>"PENDING"===e.status).length,y=g.filter(e=>"CONFIRMED"===e.status).length,U=g.filter(e=>"COMPLETED"===e.status).length,b=m.filter(e=>e.isActive).length,v=m.length,C=p.filter(e=>"PENDING"===e.status).length,S=p.filter(e=>"COMPLETED"===e.status).length,k=f.reduce((e,r)=>e+r.amount,0),T=f.filter(e=>e.createdAt>=n).reduce((e,r)=>e+r.amount,0),M=m.length>0?m.filter(e=>e.clientSatisfaction).reduce((e,r)=>e+(r.clientSatisfaction||0),0)/m.filter(e=>e.clientSatisfaction).length:0,D=g.filter(e=>"COMPLETED"===e.status).reduce((e,r)=>e+(r.totalAmount||0),0),N=c.filter(e=>e.createdAt>=u).length,R=g.filter(e=>e.createdAt>=u).length,O=p.filter(e=>e.createdAt>=u).length,x=c.length>0?I/c.length*100:0,G=p.length>0?S/p.length*100:0,W=g.length>0?U/g.length*100:0;return r.status(200).json({stats:{cases:P,totalCases:c.length,completedCases:I,pendingCases:w,caseSuccessRate:Math.round(x),consultations:E+y,totalConsultations:g.length,pendingConsultations:E,confirmedConsultations:y,completedConsultations:U,consultationCompletionRate:Math.round(W),clients:b,totalClients:v,newClientsThisMonth:m.filter(e=>e.createdAt>=n).length,team:h,pendingTasks:C,totalTasks:p.length,completedTasks:S,taskCompletionRate:Math.round(G),billing:k+D,monthlyRevenue:T,consultationRevenue:D,totalRevenue:k,clientSatisfaction:Math.round(10*M)/10,averageSatisfaction:Math.round(10*M)/10,recentActivity:N+R+O,recentCases:N,recentConsultations:R,recentTasks:O,upcoming:A.length,upcomingEvents:A.map(e=>({id:e.id,date:e.preferredDate.toISOString(),time:e.preferredTime,clientName:e.client?.name||"Unknown Client",type:"consultation"}))}})}catch(e){return console.error("Error fetching dashboard stats:",e),r.status(500).json({error:"Internal server error"})}}let c=(0,s.M)(t,"default"),g=(0,s.M)(t,"config"),m=new a.PagesAPIRouteModule({definition:{kind:n.A.PAGES_API,page:"/api/lawyer/dashboard-stats",pathname:"/api/lawyer/dashboard-stats",bundlePath:"",filename:""},userland:t})},74729:e=>{e.exports=require("bcryptjs")},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:(e,r,i)=>{i.d(r,{z:()=>a});var t=i(96330);let a=globalThis.prisma??new t.PrismaClient({log:["error"]})},86435:(e,r)=>{Object.defineProperty(r,"M",{enumerable:!0,get:function(){return function e(r,i){return i in r?r[i]:"then"in r&&"function"==typeof r.then?r.then(r=>e(r,i)):"function"==typeof r&&"default"===i?r:void 0}}})},96330:e=>{e.exports=require("@prisma/client")}};var r=require("../../../webpack-api-runtime.js");r.C(e);var i=r(r.s=54640);module.exports=i})();