import { NextResponse } from 'next/server'; import { dataService, isCarlosAdmin } from '@/lib/data-service'; import { User } from '@/types'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const phone = searchParams.get('phone'); const id = searchParams.get('id'); if (phone) { const cleanPhone = phone.replace(/\D/g, ''); const user = dataService.getUsers().find((u) => u.phone.replace(/\D/g, '') === cleanPhone); const existingOrders = dataService.getOrders().filter( (o) => o.customerPhone.replace(/\D/g, '') === cleanPhone ); const hasCompletedPreviousOrder = Boolean( (user && (user.totalOrders || 0) > 0) || existingOrders.some((o) => o.status === 'dispatched' || o.status === 'deposit_received' || o.status === 'supplier_notified') ); const requiresShippingDeposit = !hasCompletedPreviousOrder; const depositAmount = requiresShippingDeposit ? 10000 : 0; const depositReason = requiresShippingDeposit ? 'Garantía de separación requerida para primer pedido' : 'Cliente distinguido exento de anticipo (100% Contraentrega)'; const isCarlos = isCarlosAdmin(cleanPhone); const userRole = isCarlos ? 'admin' : (user?.role || 'customer'); return NextResponse.json({ success: true, isFirstPurchase: isCarlos ? false : !hasCompletedPreviousOrder, requiresShippingDeposit: isCarlos ? false : requiresShippingDeposit, depositAmount: isCarlos ? 0 : depositAmount, depositReason: isCarlos ? 'Super Administrador DripZone' : depositReason, phoneVerified: isCarlos ? true : (user ? user.phoneVerified === true : false), user: user ? { ...user, role: userRole, phoneVerified: isCarlos ? true : user.phoneVerified, requiresShippingDeposit: isCarlos ? false : requiresShippingDeposit, depositReason: isCarlos ? 'Super Administrador DripZone' : depositReason, } : isCarlos ? { id: 'usr-admin-carlos', name: 'Administrador', email: 'carlos.andres.lasso@gmail.com', phone: cleanPhone, city: 'Cali', address: 'Sede Principal / Cali', role: 'admin', isActive: true, phoneVerified: true, requiresShippingDeposit: false, depositReason: 'Super Administrador DripZone', totalOrders: 0, } : null, }); } if (id) { const user = dataService.getUserById(id); return NextResponse.json({ success: true, user }); } const users = dataService.getUsers(); return NextResponse.json({ success: true, users }); } export async function POST(request: Request) { try { const body = await request.json(); const newUser: User = { id: `usr-${Date.now()}`, name: body.name, email: body.email, phone: body.phone, city: body.city || 'Cali', address: body.address || '', role: body.role || 'customer', isActive: body.isActive !== false, createdAt: new Date().toISOString().split('T')[0], totalOrders: 0, }; const saved = dataService.addUser(newUser); return NextResponse.json({ success: true, user: saved }); } catch (error: any) { return NextResponse.json({ success: false, error: error.message }, { status: 400 }); } } export async function PUT(request: Request) { try { const { id, updates } = await request.json(); const updated = dataService.updateUser(id, updates); if (!updated) { return NextResponse.json({ success: false, error: 'Usuario no encontrado' }, { status: 404 }); } return NextResponse.json({ success: true, user: updated }); } catch (error: any) { return NextResponse.json({ success: false, error: error.message }, { status: 400 }); } } export async function DELETE(request: Request) { try { const { searchParams } = new URL(request.url); const id = searchParams.get('id'); if (!id) { return NextResponse.json({ success: false, error: 'ID requerido' }, { status: 400 }); } const deleted = dataService.deleteUser(id); return NextResponse.json({ success: deleted }); } catch (error: any) { return NextResponse.json({ success: false, error: error.message }, { status: 400 }); } }