contact integration updated

This commit is contained in:
Selvi 2026-08-10 19:24:19 +05:30
parent cca0a5b4fc
commit 2cf4fe57f7
3 changed files with 81 additions and 20 deletions

View File

@ -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 }
);
}
}

View File

@ -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}<br />Email: ${formData.email}<br />Phone: ${formData.phone}<br />Subject: ${formData.subject}<br /><br />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);
}
}
};

View File

@ -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,13 +20,33 @@ 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}<br />Email: ${formData.email}<br />Phone: ${formData.phone}<br />Guests: ${formData.guests}<br />Date: ${formData.date}<br />Time: ${formData.time}<br />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 (
@ -123,11 +144,11 @@ export default function ReservationPage() {
</h3>
<div className="flex items-center gap-4 mb-8 w-full justify-center">
<div className="w-16 h-[1px] bg-[#bc9e65]" />
<svg className="w-4 h-4 text-[#bc9e65]" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 2L15 8L22 9L17 14L18.5 21L12 17.5L5.5 21L7 14L2 9L9 8L12 2Z" />
</svg>
<div className="w-16 h-[1px] bg-[#bc9e65]" />
<div className="w-16 h-[1px] bg-[#bc9e65]" />
<svg className="w-4 h-4 text-[#bc9e65]" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 2L15 8L22 9L17 14L18.5 21L12 17.5L5.5 21L7 14L2 9L9 8L12 2Z" />
</svg>
<div className="w-16 h-[1px] bg-[#bc9e65]" />
</div>
{reserved ? (