Files
AnchorOS/app/api/bookings/[id]/route.ts
Marco Gallegos 583a25a6f6 feat: implement customer registration flow and business hours system
Major changes:
- Add customer registration with email/phone lookup (app/booking/registro)
- Add customers API endpoint (app/api/customers/route)
- Implement business hours for locations (mon-fri 10-7, sat 10-6, sun closed)
- Fix availability function type casting issues
- Add business hours utilities (lib/utils/business-hours.ts)
- Update Location type to include business_hours JSONB
- Add mock payment component for testing
- Remove Supabase auth from booking flow
- Fix /cita redirect path in booking flow

Database migrations:
- Add category column to services table
- Add business_hours JSONB column to locations table
- Fix availability functions with proper type casting
- Update get_detailed_availability to use business_hours

Features:
- Customer lookup by email or phone
- Auto-redirect to registration if customer not found
- Pre-fill customer data if exists
- Business hours per day of week
- Location-specific opening/closing times
2026-01-17 00:29:49 -06:00

57 lines
1.4 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { supabaseAdmin } from '@/lib/supabase/admin'
/**
* @description Updates the status of a specific booking
*/
export async function PATCH(
request: NextRequest,
{ params }: { params: { id: string } }
) {
try {
const bookingId = params.id
const body = await request.json()
const { status } = body
if (!status) {
return NextResponse.json(
{ error: 'Missing required field: status' },
{ status: 400 }
)
}
const validStatuses = ['pending', 'confirmed', 'completed', 'cancelled', 'no_show']
if (!validStatuses.includes(status)) {
return NextResponse.json(
{ error: `Invalid status. Must be one of: ${validStatuses.join(', ')}` },
{ status: 400 }
)
}
const { data: booking, error: updateError } = await supabaseAdmin
.from('bookings')
.update({ status })
.eq('id', bookingId)
.select()
.single()
if (updateError || !booking) {
return NextResponse.json(
{ error: updateError?.message || 'Failed to update booking' },
{ status: 400 }
)
}
return NextResponse.json({
success: true,
booking
})
} catch (error) {
console.error('Update booking error:', error)
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
)
}
}