11import { NextResponse } from "next/server" ;
2+ import { TransactionGateway , TransactionStatus } from "@prisma/client" ;
23import { isAdminEmail } from "@/lib/access" ;
34import { getSessionEmail } from "@/lib/session" ;
45import { prisma } from "@/lib/prisma" ;
@@ -14,21 +15,31 @@ export async function POST(req: Request) {
1415 const email = String ( formData . get ( "email" ) || "" ) . trim ( ) . toLowerCase ( ) ;
1516 const plan = String ( formData . get ( "plan" ) || "" ) . trim ( ) . toLowerCase ( ) ;
1617
17- if ( ! email || ! [ "starter" , "pro" , "agency" ] . includes ( plan ) ) {
18+ const validPlans = [ "free" , "pro_monthly" , "agency_monthly" , "pro_yearly" , "agency_yearly" , "pro_lifetime" , "agency_lifetime" ] ;
19+ if ( ! email || ! validPlans . includes ( plan ) ) {
1820 return NextResponse . json ( { error : "Invalid request" } , { status : 400 } ) ;
1921 }
2022
23+ const user = await prisma . user . findUnique ( { where : { email } } ) ;
24+ if ( ! user ) {
25+ return NextResponse . json ( { error : "User not found" } , { status : 404 } ) ;
26+ }
27+
2128 await prisma . user . update ( {
22- where : { email } ,
29+ where : { id : user . id } ,
2330 data : { plan, status : "active" } ,
2431 } ) ;
2532
26- await ( prisma as any ) . billingEvent . create ( {
33+ await prisma . transaction . create ( {
2734 data : {
28- email,
29- provider : "admin" ,
30- plan,
31- status : "completed" ,
35+ userId : user . id ,
36+ gateway : TransactionGateway . ADMIN ,
37+ status : TransactionStatus . COMPLETED ,
38+ planId : plan ,
39+ amountUSD : 0 ,
40+ paymentRef : `admin-${ email } -${ Date . now ( ) } ` ,
41+ creditsAdded : 0 ,
42+ metadata : { email, provider : "admin" } ,
3243 } ,
3344 } ) ;
3445
0 commit comments