add /booking/uuid

This commit is contained in:
Thomas Ruoff
2020-08-22 00:09:11 +02:00
parent 7dea0153c4
commit e9f4753fdc
4 changed files with 42 additions and 13 deletions

View File

@@ -1,27 +1,30 @@
const FORM_DATA_KEY = 'pfadiBussleFormData'
const BOOKING_DATA_KEY = 'pfadiBussleBookingData'
function getStorage() {
return localStorage
}
export function storeFormData({ org, name, email, street, zip, city }) {
export function storeBookingData({ booker, ...booking }) {
const { name, email, street, zip, city } = booker
const { org } = booking
getStorage().setItem(
FORM_DATA_KEY,
BOOKING_DATA_KEY,
JSON.stringify({ org, name, email, street, zip, city })
)
}
export function clearFormData() {
getStorage().removeItem(FORM_DATA_KEY)
export function clearBookingData() {
getStorage().removeItem(BOOKING_DATA_KEY)
}
export function loadFormData() {
const dataAsString = getStorage().getItem(FORM_DATA_KEY)
export function loadBookingData() {
const dataAsString = getStorage().getItem(BOOKING_DATA_KEY)
let result = null
try {
result = JSON.parse(dataAsString)
} catch (e) {
console.error(`localStorage ${FORM_DATA_KEY} has invalid data stored`)
console.error(`localStorage ${BOOKING_DATA_KEY} has invalid data stored`)
}
return result

View File

@@ -0,0 +1,20 @@
import { getBookingByUUID, createBooking } from '../../../db/index'
export default async function userHandler(req, res) {
const {
method,
query: { uuid },
} = req
let booking
switch (method) {
case 'GET':
booking = await getBookingByUUID(uuid)
res.status(200).json(booking)
break
default:
res.setHeader('Allow', ['POST'])
res.status(405).end(`Method ${method} Not Allowed`)
}
}

View File

@@ -1,7 +1,7 @@
import { createBooking } from '../../db/index'
import { createBooking } from '../../../db/index'
import { Error } from 'mongoose'
import { sendReceivedBookingMail } from '../../helpers/mail'
import { sendReceivedBookingMail } from '../../../helpers/mail'
export default async function userHandler(req, res) {
const { method } = req

View File

@@ -1,9 +1,14 @@
import React, { useContext } from 'react'
import { AppContext } from '../../context/appStore'
import { WizardContext } from '../../context/wizardStore'
import Footer from '../../components/footer'
// TODO: load booking somehow if we navigate to booking
// TODO: when storing data take loaded booking instead of fromData
// TODO: show state of booking and minimal data
export default function Booking() {
const { state, storeData } = useContext(AppContext)
const { state, storeData } = useContext(WizardContext)
const { dataStored, dataStoredLoaded } = state
return (
@@ -11,7 +16,7 @@ export default function Booking() {
<main className="flex-grow">
<h1 className="text-3xl">Pfadi Bussle Buchung</h1>
<h3>Danke, die Buchung ist in Bearbeitung!</h3>
<h3>Vielen Dank für die Buchung!</h3>
<p>Nach Prüfung bestätigen wir die Buchung bald per E-Mail!</p>
{!dataStoredLoaded && typeof dataStored !== 'boolean' && (
<>
@@ -33,6 +38,7 @@ export default function Booking() {
{dataStored === true && (
<p>Ok, die Daten wurden für die nächste Buchung gespeichert.</p>
)}
<div>{JSON.stringify(state.booking, null, 4)}</div>
</main>
<Footer />