Files
dticket.tootaio.com/server/api/public/bookings/[token]/transaction-document.delete.ts
xiaomai a56a6706b0 feat(bookings): add payment and document upload to confirmation page
Allow users to select payment method and upload receipts before confirming.
Add public API endpoints for payment updates and document management.
2026-05-09 13:15:45 +08:00

34 lines
1.1 KiB
TypeScript

import type { UpdateBookingDetailsResponse } from '~~/shared/booking'
import {
clearBookingTransactionDocumentByConfirmationToken,
getBookingByConfirmationToken
} from '../../../../utils/booking-repository'
import { getRequiredRouteParam, httpError } from '../../../../utils/http'
import { deleteTransactionDocument } from '../../../../utils/transaction-documents'
export default defineEventHandler(async (event): Promise<UpdateBookingDetailsResponse> => {
const token = getRequiredRouteParam(event, 'token', 'Confirmation token')
const booking = await getBookingByConfirmationToken(token, { includeTransactionDocument: true })
if (!booking) {
httpError(404, 'Booking not found')
}
if (booking.status !== 'pending') {
httpError(409, 'Transaction document can only be changed before confirmation')
}
const result = await clearBookingTransactionDocumentByConfirmationToken(token)
if (!result) {
httpError(404, 'Booking not found')
}
await deleteTransactionDocument(result.previousStorageName)
return {
booking: result.booking
}
})