.alert-success background: #d4edda; color: #155724; border: 1px solid #c3e6cb;
.visa-header text-align: center; color: white; margin-bottom: 30px;
INSERT INTO hua_hin_hotels (hotel_name, hotel_address, contact_person, contact_email, contact_phone) VALUES ('Hua Hin Marriott Resort & Spa', '107/1 Phetkasem Road, Hua Hin, Prachuap Khiri Khan 77110, Thailand', 'Somchai Thongprasert', 'reservations@huahinmarriott.com', '+66 32 123 456'), ('Centara Grand Beach Resort', '1 Damnernkasem Road, Hua Hin, Prachuap Khiri Khan 77110, Thailand', 'Nittaya Kaewkate', 'huahin@centarahotels.com', '+66 32 512 021'), ('InterContinental Hua Hin Resort', '33/33 Phetkasem Road, Hua Hin, Prachuap Khiri Khan 77110, Thailand', 'Maria Fernandez', 'reservations.hua Hin@ihg.com', '+66 32 616 999'); Features Included: ✅ Generate PDF visa support letter ✅ Email letter directly to guest ✅ Store all visa requests in database ✅ Beautiful responsive UI ✅ Hua Hin specific hotel details ✅ Passport and guest information validation ✅ Professional letter format accepted by Thai Embassy hotel visa hua hin
.info-box ul margin: 10px 0; padding-left: 20px;
// Letter content doc.fontSize(20).text('CONFIRMATION OF BOOKING & VISA SUPPORT LETTER', align: 'center' ); doc.moveDown(); doc.fontSize(12).text(`Date: $new Date().toLocaleDateString()`, align: 'right' ); doc.moveDown(); doc.text('To: The Royal Thai Embassy/Consulate', align: 'left' ); doc.moveDown(); doc.text('Subject: Visa Support Letter for Tourist Visa Application', bold: true ); doc.moveDown(); doc.text(`Dear Visa Officer,`); doc.moveDown(); doc.text(`This letter is to confirm that $data.guest.name (Passport No: $data.guest.passport, Nationality: $data.guest.nationality) has made a confirmed booking at our hotel in Hua Hin, Thailand.`); doc.moveDown(); doc.text(`Hotel Details:`); doc.text(`Name: $data.hotel.hotel_name`); doc.text(`Address: $data.hotel.hotel_address`); doc.text(`Contact: $data.hotel.contact_phone / $data.hotel.contact_email`); doc.moveDown(); doc.text(`Booking Details:`); doc.text(`Check-in Date: $data.dates.check_in`); doc.text(`Check-out Date: $data.dates.check_out`); doc.text(`Room Type: $ 'Standard Room'`); doc.text(`Purpose of Stay: Tourism/Holiday`); doc.moveDown(); doc.text(`We kindly request you to consider issuing the appropriate visa for the above-mentioned guest. The guest has confirmed their booking and will be staying at our establishment during their visit to Hua Hin.`); doc.moveDown(); doc.text(`Should you require any further information, please do not hesitate to contact us.`); doc.moveDown(); doc.moveDown(); doc.text(`Sincerely yours,`, align: 'left' ); doc.moveDown(); doc.text(`$data.hotel.contact_person `); doc.text(`$data.hotel.hotel_name`); doc.text(`(Authorized Signature)`); doc.end(); stream.on('finish', () => resolve(filepath)); stream.on('error', reject); ); .alert-success background: #d4edda
return ( <div className="visa-support-container"> <div className="visa-header"> <h1>🏨 Hua Hin Visa Support Letter</h1> <p>Generate official visa invitation letters for your guests</p> </div> message && ( <div className=`alert alert-$message.type`> message.text </div> ) <form onSubmit=handleSubmit className="visa-form"> <div className="form-group"> <label>Select Hotel *</label> <select name="hotel_id" value=formData.hotel_id onChange=handleChange required > <option value="">Select Hua Hin Hotel</option> <option value="1">Hua Hin Marriott Resort & Spa</option> <option value="2">Centara Grand Beach Resort</option> <option value="3">InterContinental Hua Hin Resort</option> </select> </div> <div className="form-row"> <div className="form-group"> <label>Guest Full Name *</label> <input type="text" name="guest_name" value=formData.guest_name onChange=handleChange placeholder="As in passport" required /> </div> <div className="form-group"> <label>Passport Number *</label> <input type="text" name="passport_number" value=formData.passport_number onChange=handleChange required /> </div> </div> <div className="form-row"> <div className="form-group"> <label>Nationality *</label> <input type="text" name="nationality" value=formData.nationality onChange=handleChange placeholder="e.g., Indian, Chinese, etc." required /> </div> <div className="form-group"> <label>Guest Email *</label> <input type="email" name="guest_email" value=formData.guest_email onChange=handleChange required /> </div> </div> <div className="form-row"> <div className="form-group"> <label>Check-in Date *</label> <input type="date" name="check_in_date" value=formData.check_in_date onChange=handleChange required /> </div> <div className="form-group"> <label>Check-out Date *</label> <input type="date" name="check_out_date" value=formData.check_out_date onChange=handleChange required /> </div> </div> <div className="form-group"> <label>Room Type</label> <select name="room_type" value=formData.room_type onChange=handleChange > <option value="">Select room type</option> <option value="Standard Room">Standard Room</option> <option value="Deluxe Sea View">Deluxe Sea View</option> <option value="Suite">Suite</option> <option value="Villa">Villa</option> </select> </div> <div className="info-box"> <h4>📋 Important Information</h4> <ul> <li>Visa letter is valid for 30 days from issue date</li> <li>Guest must present original passport at check-in</li> <li>Letter will be sent to guest's email within 5 minutes</li> <li>For Hua Hin visa requirements, contact Thai Embassy</li> </ul> </div> <button type="submit" disabled=loading className="submit-btn"> loading ? 'Generating...' : 'Generate & Send Visa Letter' </button> </form> </div> ); ;
const handleChange = (e) => setFormData( ...formData, [e.target.name]: e.target.value ); ; border: 1px solid #c3e6cb
.form-row display: grid; grid-template-columns: 1fr 1fr; gap: 20px;