diff --git a/src/app/api/send-email/route.ts b/src/app/api/send-email/route.ts new file mode 100644 index 0000000..9b53d78 --- /dev/null +++ b/src/app/api/send-email/route.ts @@ -0,0 +1,20 @@ +import { NextResponse } from 'next/server'; +import axios from 'axios'; + +export async function POST(request: Request) { + try { + const body = await request.json(); + const res = await axios.post( + "https://mailserver.metatronnest.com/send", + body, + { headers: { "Content-Type": "application/json" } } + ); + return NextResponse.json({ success: true, data: res.data }); + } catch (error: any) { + console.error("Email send error:", error.message); + return NextResponse.json( + { success: false, error: error.message }, + { status: 500 } + ); + } +} diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx index 37e4093..c358bac 100644 --- a/src/app/contact/page.tsx +++ b/src/app/contact/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import axios from "axios"; import Image from "next/image"; import { Phone, Mail, MapPin, Clock, UtensilsCrossed, ShoppingBag, Truck, ChefHat } from "lucide-react"; import SubpageLayout from "@/components/SubpageLayout"; @@ -28,14 +29,33 @@ export default function ContactPage() { const [formData, setFormData] = useState({ name: "", email: "", phone: "", subject: "", msg: "" }); const [submitted, setSubmitted] = useState(false); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (formData.name && formData.email && formData.msg) { - setSubmitted(true); - setTimeout(() => { - setSubmitted(false); - setFormData({ name: "", email: "", phone: "", subject: "", msg: "" }); - }, 5000); + const emailData = { + name: formData.name, + phone: formData.phone, + email: formData.email, + subject: formData.subject || "New Contact Message", + message: `Name: ${formData.name}Email: ${formData.email}Phone: ${formData.phone}Subject: ${formData.subject}Message: ${formData.msg}`, + to: "mydosaplacewaterloo@gmail.com", + senderName: "My Dosa Place Contact Form" + }; + + try { + await axios.post( + "/api/send-email", + emailData, + { headers: { "Content-Type": "application/json" } } + ); + setSubmitted(true); + setTimeout(() => { + setSubmitted(false); + setFormData({ name: "", email: "", phone: "", subject: "", msg: "" }); + }, 5000); + } catch (error) { + console.error("Failed to send message", error); + } } }; diff --git a/src/app/reservation/page.tsx b/src/app/reservation/page.tsx index 276fcdf..f32189f 100644 --- a/src/app/reservation/page.tsx +++ b/src/app/reservation/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import axios from "axios"; import Image from "next/image"; import { User, Mail, Phone, Calendar, Clock, Users, MapPin } from "lucide-react"; import SubpageLayout from "@/components/SubpageLayout"; @@ -19,20 +20,40 @@ export default function ReservationPage() { }); const [reserved, setReserved] = useState(false); - const handleReserve = (e: React.FormEvent) => { + const handleReserve = async (e: React.FormEvent) => { e.preventDefault(); - setReserved(true); - setTimeout(() => { - setReserved(false); - setFormData({ ...formData, name: "", email: "", phone: "", date: "" }); - }, 6000); + + const emailData = { + name: formData.name, + phone: formData.phone, + email: formData.email, + subject: "New Table Reservation", + message: `Name: ${formData.name}Email: ${formData.email}Phone: ${formData.phone}Guests: ${formData.guests}Date: ${formData.date}Time: ${formData.time}Area: ${formData.area}`, + to: "mydosaplacewaterloo@gmail.com", + senderName: "My Dosa Place Reservation Form" + }; + + try { + await axios.post( + "/api/send-email", + emailData, + { headers: { "Content-Type": "application/json" } } + ); + setReserved(true); + setTimeout(() => { + setReserved(false); + setFormData({ ...formData, name: "", email: "", phone: "", date: "" }); + }, 6000); + } catch (error) { + console.error("Failed to send reservation", error); + } }; return ( - + {/* Full Page Background with Pots and Temple */} */} - + {/* Form Card */} @@ -123,11 +144,11 @@ export default function ReservationPage() { - - - - - + + + + + {reserved ? ( @@ -148,7 +169,7 @@ export default function ReservationPage() { ) : ( - + {/* Personal Info Row */}