|
|
const express = require('express'); |
|
|
const cors = require('cors'); |
|
|
const { db } = require('./src/firebase'); |
|
|
const axios = require('axios'); |
|
|
require('dotenv').config(); |
|
|
|
|
|
const app = express(); |
|
|
const PORT = process.env.PORT || 7860; |
|
|
|
|
|
app.use(cors()); |
|
|
app.use(express.json()); |
|
|
|
|
|
|
|
|
const sendTelegramAlert = async (data) => { |
|
|
const token = process.env.TELEGRAM_BOT_TOKEN; |
|
|
const chatId = process.env.TELEGRAM_CHAT_ID; |
|
|
|
|
|
if (!token || !chatId) { |
|
|
console.warn("β οΈ Telegram credentials missing in .env"); |
|
|
return; |
|
|
} |
|
|
|
|
|
|
|
|
const message = ` |
|
|
π *New Lead: House of Ruqa* |
|
|
|
|
|
π€ *Name:* ${data.name} |
|
|
π§ *Email:* ${data.email} |
|
|
π *Phone:* ${data.phone} |
|
|
π¦ *Package:* ${data.packageType} |
|
|
|
|
|
π *Message:* |
|
|
${data.message} |
|
|
`; |
|
|
|
|
|
try { |
|
|
const url = `https://api.telegram.org/bot${token}/sendMessage`; |
|
|
await axios.post(url, { |
|
|
chat_id: chatId, |
|
|
text: message, |
|
|
parse_mode: 'Markdown' |
|
|
}); |
|
|
console.log("βοΈ Telegram Notification Sent"); |
|
|
} catch (error) { |
|
|
console.error("β Telegram Error:", error.response ? error.response.data : error.message); |
|
|
} |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
app.get('/health', (req, res) => { |
|
|
res.status(200).json({ status: 'Online', system: 'House of Ruqa Backend' }); |
|
|
}); |
|
|
|
|
|
app.post('/api/lead', async (req, res) => { |
|
|
try { |
|
|
const { name, email, phone, message, packageType } = req.body; |
|
|
|
|
|
if (!name || !email) { |
|
|
return res.status(400).json({ error: 'Name and Email are required.' }); |
|
|
} |
|
|
|
|
|
const leadData = { |
|
|
name, |
|
|
email, |
|
|
phone: phone || 'N/A', |
|
|
message: message || '', |
|
|
packageType: packageType || 'General Inquiry', |
|
|
timestamp: new Date().toISOString(), |
|
|
status: 'new', |
|
|
source: 'website_form' |
|
|
}; |
|
|
|
|
|
|
|
|
const docRef = await db.collection('leads').add(leadData); |
|
|
console.log(`β
New Lead Saved: ${docRef.id}`); |
|
|
|
|
|
|
|
|
sendTelegramAlert(leadData); |
|
|
|
|
|
res.status(201).json({ |
|
|
success: true, |
|
|
message: 'Request received.', |
|
|
id: docRef.id |
|
|
}); |
|
|
|
|
|
} catch (error) { |
|
|
console.error("β Error processing lead:", error); |
|
|
res.status(500).json({ success: false, error: 'Internal Server Error' }); |
|
|
} |
|
|
}); |
|
|
|
|
|
app.listen(PORT, () => { |
|
|
console.log(`π House of Ruqa Server running on port ${PORT}`); |
|
|
}); |