feat: enhance booking flow with BPF wizard, weekend pricing, and document uploads
- Updated translations for German and English to reflect changes in deposit terminology. - Modified index.html to implement a new booking flow with a step-by-step wizard for vehicle selection, contact details, and ID verification. - Added CSS styles for the new booking flow interface, including responsive design and improved input styles. - Created new database policies and tables for handling customer and lead attachments during the booking process. - Introduced weekend pricing and daily KM limits for vehicles in the database schema. - Implemented email-based customer upsert functionality to streamline lead qualification and attachment transfer. Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
+104
-8
@@ -10,9 +10,9 @@ export const translations = {
|
||||
|
||||
heroEyebrow: "MC Cars · Sportwagenvermietung",
|
||||
heroTitle: "Fahren auf hoechstem Niveau.",
|
||||
heroLead: "Premium-Sportwagen und Luxusklasse in der Steiermark. Kautionsfrei, transparent, sofort startklar.",
|
||||
heroLead: "Premium-Sportwagen und Luxusklasse in der Steiermark. Faire Kaution, transparent, sofort startklar.",
|
||||
|
||||
statDeposit: "Kaution",
|
||||
statDeposit: "Faire Kaution",
|
||||
statSupport: "Support",
|
||||
statCars: "Fahrzeuge",
|
||||
|
||||
@@ -42,8 +42,8 @@ export const translations = {
|
||||
whyInsuranceText: "Vollkasko mit klarem Selbstbehalt. Transparente Kosten auf jedem Kilometer.",
|
||||
whyFleet: "Premium Flotte",
|
||||
whyFleetText: "Handverlesene Performance-Modelle, professionell gewartet und sofort startklar.",
|
||||
whyDeposit: "Kautionsfrei",
|
||||
whyDepositText: "Sie zahlen nur die Miete. Kein Kapital blockiert, kein unnoetiger Aufwand.",
|
||||
whyDeposit: "Faire Kaution",
|
||||
whyDepositText: "Kein Ueberziehen. Transparente, faire Kaution ohne unnoetige Belastung.",
|
||||
|
||||
reviewsEyebrow: "Kundenmeinungen",
|
||||
reviewsTitle: "Erlebnisse, die bleiben.",
|
||||
@@ -61,9 +61,57 @@ export const translations = {
|
||||
messagePlaceholder: "Wuensche, Uhrzeit, Anlass...",
|
||||
sendRequest: "Anfrage senden",
|
||||
invalidDates: "Bitte ein gueltiges Datum waehlen (Bis > Von).",
|
||||
weekendSaturdayOnly: "Im Wochenendmodus bitte einen Samstag waehlen.",
|
||||
bookingSuccess: "Danke! Wir melden uns in Kuerze per E-Mail.",
|
||||
bookingFailed: "Anfrage konnte nicht gesendet werden. Bitte erneut versuchen.",
|
||||
|
||||
// BPF Wizard
|
||||
bpfTitle: "Jetzt buchen",
|
||||
bpfSubtitle: "Waehle dein Wunschfahrzeug, den Zeitraum und konfiguriere deine Buchung nach Wunsch.",
|
||||
stepVehicleTime: "Fahrzeug & Zeitraum",
|
||||
stepContact: "Kontaktdaten",
|
||||
stepVerification: "ID-Verifizierung",
|
||||
bpfRentalDuration: "Mietdauer",
|
||||
bpfVehicle: "Fahrzeug",
|
||||
bpfSelectVehicle: "Fahrzeug waehlen",
|
||||
bpfDuration: "Mietdauer",
|
||||
bpfPresetDay: "1 Tag",
|
||||
bpfPresetWeekend: "Wochenende",
|
||||
bpfPresetCustom: "Individuell",
|
||||
bpfPickDate: "Datum waehlen",
|
||||
bpfPickWeekend: "Wochenende waehlen (Samstag)",
|
||||
bpfStartDate: "Startdatum",
|
||||
bpfEndDate: "Enddatum",
|
||||
bpfSelectDate: "Datum waehlen",
|
||||
bpfNext: "Weiter",
|
||||
bpfBack: "Zurueck",
|
||||
bpfDailyRate: "Tagesmiete",
|
||||
bpfWeekendRate: "Wochenendmiete",
|
||||
bpfWeekendDef: "Wochenende: Samstag 9:00 – Sonntag 20:00",
|
||||
bpfMaxKm: "Max. km/Tag",
|
||||
bpfExtraKm: "Extra km",
|
||||
bpfPriceOverview: "Preisuebersicht",
|
||||
bpfSelectForPrice: "Waehle Fahrzeug und Datum fuer eine Preisuebersicht",
|
||||
bpfSubtotal: "Zwischensumme",
|
||||
bpfVat: "MwSt. (20%)",
|
||||
bpfTotal: "Gesamtbetrag",
|
||||
bpfDeposit: "Kaution",
|
||||
bpfIncludedKm: "Inkludierte Kilometer",
|
||||
bpfIdUpload: "Ausweis / Fuehrerschein",
|
||||
bpfIncomeUpload: "Lohnzettel / Gehaltsnachweis",
|
||||
bpfUploadHint: "PDF, JPG, PNG (max. 10 MB)",
|
||||
bpfClickUpload: "Klicken zum Hochladen",
|
||||
bpfIdNotice: "Ihre Dokumente werden vertraulich behandelt und dienen ausschliesslich der Identitaetsverifizierung.",
|
||||
bpfSubmit: "Anfrage absenden",
|
||||
bpfPerKm: "/km",
|
||||
bpfDays: "Tage",
|
||||
bpfWeekendDays: "Wochenendtage",
|
||||
bpfWeekdays: "Wochentage",
|
||||
|
||||
// Weekend pricing on cards
|
||||
perWeekend: "Wochenende",
|
||||
weekendDef: "Sa 9:00 – So 20:00",
|
||||
|
||||
footerTagline: "Sportwagenvermietung in Oesterreich. Standort: Steiermark (TBD).",
|
||||
footerLegal: "Rechtliches",
|
||||
footerContact: "Kontakt",
|
||||
@@ -132,9 +180,9 @@ export const translations = {
|
||||
|
||||
heroEyebrow: "MC Cars · Sports car rental",
|
||||
heroTitle: "Drive at the highest level.",
|
||||
heroLead: "Premium sports and luxury cars in Styria. No deposit, full transparency, ready to launch.",
|
||||
heroLead: "Premium sports and luxury cars in Styria. Fair deposit, full transparency, ready to launch.",
|
||||
|
||||
statDeposit: "Deposit",
|
||||
statDeposit: "Fair Deposit",
|
||||
statSupport: "Support",
|
||||
statCars: "Vehicles",
|
||||
|
||||
@@ -164,8 +212,8 @@ export const translations = {
|
||||
whyInsuranceText: "Comprehensive cover with a clear deductible. Transparent costs on every kilometer.",
|
||||
whyFleet: "Premium fleet",
|
||||
whyFleetText: "Hand-picked performance models, professionally maintained and ready to go.",
|
||||
whyDeposit: "No deposit",
|
||||
whyDepositText: "You only pay rent. No blocked capital, no unnecessary overhead.",
|
||||
whyDeposit: "Fair Deposit",
|
||||
whyDepositText: "No overcharge. A transparent, fair deposit with no unnecessary burden.",
|
||||
|
||||
reviewsEyebrow: "Testimonials",
|
||||
reviewsTitle: "Experiences that last.",
|
||||
@@ -183,9 +231,57 @@ export const translations = {
|
||||
messagePlaceholder: "Wishes, timing, occasion...",
|
||||
sendRequest: "Send request",
|
||||
invalidDates: "Please pick valid dates (To > From).",
|
||||
weekendSaturdayOnly: "In weekend mode, please select a Saturday.",
|
||||
bookingSuccess: "Thank you! We'll get back to you shortly.",
|
||||
bookingFailed: "Request could not be sent. Please try again.",
|
||||
|
||||
// BPF Wizard
|
||||
bpfTitle: "Book now",
|
||||
bpfSubtitle: "Choose your dream car, the time period, and configure your booking.",
|
||||
stepVehicleTime: "Vehicle & Period",
|
||||
stepContact: "Contact details",
|
||||
stepVerification: "ID Verification",
|
||||
bpfRentalDuration: "Rental duration",
|
||||
bpfVehicle: "Vehicle",
|
||||
bpfSelectVehicle: "Select vehicle",
|
||||
bpfDuration: "Rental duration",
|
||||
bpfPresetDay: "1 Day",
|
||||
bpfPresetWeekend: "Weekend",
|
||||
bpfPresetCustom: "Custom",
|
||||
bpfPickDate: "Pick date",
|
||||
bpfPickWeekend: "Pick weekend (Saturday)",
|
||||
bpfStartDate: "Start date",
|
||||
bpfEndDate: "End date",
|
||||
bpfSelectDate: "Select date",
|
||||
bpfNext: "Next",
|
||||
bpfBack: "Back",
|
||||
bpfDailyRate: "Daily rate",
|
||||
bpfWeekendRate: "Weekend rate",
|
||||
bpfWeekendDef: "Weekend: Saturday 9 AM – Sunday 8 PM",
|
||||
bpfMaxKm: "Max. km/day",
|
||||
bpfExtraKm: "Extra km",
|
||||
bpfPriceOverview: "Price overview",
|
||||
bpfSelectForPrice: "Select vehicle and date for a price overview",
|
||||
bpfSubtotal: "Subtotal",
|
||||
bpfVat: "VAT (20%)",
|
||||
bpfTotal: "Total",
|
||||
bpfDeposit: "Deposit",
|
||||
bpfIncludedKm: "Included kilometers",
|
||||
bpfIdUpload: "ID / Driving license",
|
||||
bpfIncomeUpload: "Pay slip / Income proof",
|
||||
bpfUploadHint: "PDF, JPG, PNG (max. 10 MB)",
|
||||
bpfClickUpload: "Click to upload",
|
||||
bpfIdNotice: "Your documents are treated confidentially and are used exclusively for identity verification.",
|
||||
bpfSubmit: "Submit request",
|
||||
bpfPerKm: "/km",
|
||||
bpfDays: "Days",
|
||||
bpfWeekendDays: "Weekend days",
|
||||
bpfWeekdays: "Weekdays",
|
||||
|
||||
// Weekend pricing on cards
|
||||
perWeekend: "Weekend",
|
||||
weekendDef: "Sat 9 AM – Sun 8 PM",
|
||||
|
||||
footerTagline: "Sports car rental in Austria. Location: Styria (TBD).",
|
||||
footerLegal: "Legal",
|
||||
footerContact: "Contact",
|
||||
|
||||
Reference in New Issue
Block a user