diff --git a/src/app/api/send-reservation/route.ts b/src/app/api/send-reservation/route.ts new file mode 100644 index 0000000..822502f --- /dev/null +++ b/src/app/api/send-reservation/route.ts @@ -0,0 +1,52 @@ +import nodemailer from "nodemailer"; +import { NextRequest, NextResponse } from "next/server"; + +const transporter = nodemailer.createTransport({ + service: "gmail", auth: { + user: process.env.GMAIL_USER, + pass: process.env.GMAIL_PASSWORD, + }, +}); + +export async function POST(request: NextRequest) { + try { + const data = await request.json(); + + const { name, email, phone, date, time, guests, message } = data; + + if (!name || !email || !phone || !date || !time || !guests) { + return NextResponse.json( + { error: "Missing required fields" }, + { status: 400 } + ); + } + + const mailOptions = { + from: process.env.GMAIL_USER, + to: "prezantime1@gmail.com", subject: `New Reservation Request from ${name}`, + html: ` +
Name: ${name}
+Email: ${email}
+Phone: ${phone}
+Date: ${date}
+Time: ${time}
+Number of Guests: ${guests}
+Special Requests: ${message || "None"}
+ `, + }; + + await transporter.sendMail(mailOptions); + + return NextResponse.json( + { message: "Reservation request sent successfully" }, + { status: 200 } + ); + } catch (error) { + console.error("Error sending reservation:", error); + return NextResponse.json( + { error: "Failed to send reservation" }, + { status: 500 } + ); + } +} diff --git a/src/app/page.tsx b/src/app/page.tsx index c5806ab..d84b198 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -10,8 +10,42 @@ import TestimonialCardTen from "@/components/sections/testimonial/TestimonialCar import ContactCTA from "@/components/sections/contact/ContactCTA"; import FooterBase from "@/components/sections/footer/FooterBase"; import { BookOpen, Flame, Heart, Award, Star, Calendar, Castle } from "lucide-react"; +import { useState } from "react"; +import nodemailer from "nodemailer"; export default function LandingPage() { + const [reservationData, setReservationData] = useState({ + name: "", email: "", phone: "", date: "", time: "", guests: "", message: "" + }); + const [submitting, setSubmitting] = useState(false); + const [submitMessage, setSubmitMessage] = useState(""); + + const handleReservationSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setSubmitting(true); + setSubmitMessage(""); + + try { + const response = await fetch("/api/send-reservation", { + method: "POST", headers: { + "Content-Type": "application/json"}, + body: JSON.stringify(reservationData), + }); + + if (response.ok) { + setSubmitMessage("Reservation request sent successfully! We'll confirm shortly."); + setReservationData({ + name: "", email: "", phone: "", date: "", time: "", guests: "", message: "" + }); + } else { + setSubmitMessage("Failed to send reservation. Please try again."); + } + } catch (error) { + setSubmitMessage("An error occurred. Please contact us directly."); + } + setSubmitting(false); + }; + return (+ Book your dining experience at Taverna Kala. Fill out the form below and we'll confirm your reservation shortly. +
+
+ Or contact us directly:
+ Email: reservations@tavernakala.al
+ Phone: +355 697 123 456
+