import { NextResponse } from 'next/server'; import { getOrdersFromAppwrite, createOrderInAppwrite, updateOrderInAppwrite, deleteOrderInAppwrite, } from '@/lib/server-appwrite'; import { notifyAdminNewOrder } from '@/lib/evolution-api'; import { dataService } from '@/lib/data-service'; export async function GET(request: Request) { try { const { searchParams } = new URL(request.url); const phone = searchParams.get('phone'); let orders = await getOrdersFromAppwrite(); if (!orders || orders.length === 0) { orders = dataService.getOrders(); } if (phone) { const cleanPhone = phone.replace(/\D/g, ''); orders = orders.filter((o: any) => { const oPhone = (o.customerPhone || '').replace(/\D/g, ''); return oPhone.endsWith(cleanPhone) || cleanPhone.endsWith(oPhone); }); } return NextResponse.json({ success: true, orders }); } catch (error: any) { let fallback = dataService.getOrders(); try { const { searchParams } = new URL(request.url); const phone = searchParams.get('phone'); if (phone) { const cleanPhone = phone.replace(/\D/g, ''); fallback = fallback.filter((o: any) => { const oPhone = (o.customerPhone || '').replace(/\D/g, ''); return oPhone.endsWith(cleanPhone) || cleanPhone.endsWith(oPhone); }); } } catch (_) {} return NextResponse.json({ success: true, orders: fallback }); } } export async function POST(request: Request) { try { const body = await request.json(); const newOrder = await createOrderInAppwrite(body); dataService.addOrder(newOrder); // Notificación al Administrador Carlos (+57 316 745 5877) con la foto y detalle del pedido notifyAdminNewOrder(newOrder).catch((err) => { console.warn('⚠️ No se pudo enviar notificación de nuevo pedido a Carlos:', err.message); return false; }); return NextResponse.json({ success: true, order: newOrder }); } catch (error: any) { return NextResponse.json({ success: false, error: error.message }, { status: 400 }); } } export async function PUT(request: Request) { try { const body = await request.json(); const { id, updates, ...rest } = body; const targetId = id || rest.id; if (!targetId) { return NextResponse.json({ success: false, error: 'ID de la orden requerido' }, { status: 400 }); } const payload = updates || rest; if (payload.status) { dataService.updateOrderStatus(targetId, payload.status, payload.rejectionReason); } const updated = await updateOrderInAppwrite(targetId, payload); dataService.updateOrder(targetId, payload); return NextResponse.json({ success: true, order: updated || payload }); } 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); let id = searchParams.get('id'); if (!id) { try { const body = await request.json(); id = body?.id; } catch (_) {} } if (!id) { return NextResponse.json({ success: false, error: 'ID de la orden requerido' }, { status: 400 }); } const deleted = await deleteOrderInAppwrite(id); dataService.deleteOrder(id); return NextResponse.json({ success: deleted, message: deleted ? 'Orden eliminada correctamente' : 'No se encontró la orden' }); } catch (error: any) { return NextResponse.json({ success: false, error: error.message }, { status: 500 }); } }