Files
2025-12-21 11:12:02 +01:00

75 lines
2.2 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { cookies } from 'next/headers'
import pool from '@/lib/db'
// POST /api/buyer-data/get-or-create - Get existing buyer_data or create new one
export async function POST(request: NextRequest) {
try {
const cookieStore = cookies()
const buyerIdCookie = cookieStore.get('buyer_id')?.value
if (!buyerIdCookie) {
return NextResponse.json(
{ error: 'Authentication required' },
{ status: 401 }
)
}
const buyer_id = parseInt(buyerIdCookie, 10)
const body = await request.json()
const { fullname, address, phone } = body
// Validate required fields
if (!fullname || !address || !phone) {
return NextResponse.json(
{ error: 'Full name, address, and phone are required' },
{ status: 400 }
)
}
// Validate phone format (basic validation - 10-15 digits)
const phoneRegex = /^[+]?[\d\s\-()]{10,15}$/
if (!phoneRegex.test(phone)) {
return NextResponse.json(
{ error: 'Invalid phone number format' },
{ status: 400 }
)
}
// Check if buyer_data with same values already exists for this buyer
const [existingRows] = await pool.execute(
'SELECT id FROM buyer_data WHERE buyer_id = ? AND fullname = ? AND address = ? AND phone = ?',
[buyer_id, fullname.trim(), address.trim(), phone.trim()]
)
const existing = existingRows as any[]
if (existing.length > 0) {
// Return existing buyer_data_id
return NextResponse.json({
buyer_data_id: existing[0].id,
created: false,
})
}
// Create new buyer_data record
const [result] = await pool.execute(
'INSERT INTO buyer_data (buyer_id, fullname, address, phone) VALUES (?, ?, ?, ?)',
[buyer_id, fullname.trim(), address.trim(), phone.trim()]
)
const buyer_data_id = (result as any).insertId
return NextResponse.json({
buyer_data_id,
created: true,
}, { status: 201 })
} catch (error) {
console.error('Error getting or creating buyer_data:', error)
return NextResponse.json(
{ error: 'Failed to process buyer data' },
{ status: 500 }
)
}
}