add contact request

This commit is contained in:
2026-07-14 11:21:37 +03:30
parent dc2b202797
commit 25a6fe67b7
2 changed files with 66 additions and 1 deletions
+2 -1
View File
@@ -16,7 +16,8 @@ const defaultDb = () => ({
clients: [],
stats: [],
blogPosts: [],
media: []
media: [],
contactRequests: []
})
function ensureDataDir() {
+64
View File
@@ -249,6 +249,70 @@ app.put('/api/media/:id', authMiddleware, (req, res) => {
res.json(updated)
})
app.post('/api/contact-requests', (req, res) => {
const { name, email, phone, category, message } = req.body || {}
if (!name?.trim() || !email?.trim() || !category?.trim() || !message?.trim()) {
return res.status(400).json({ error: 'نام، ایمیل، نوع پروژه و توضیحات الزامی است' })
}
const request = {
id: randomUUID(),
name: name.trim(),
email: email.trim(),
phone: phone?.trim() || '',
category: category.trim(),
message: message.trim(),
status: 'new',
createdAt: new Date().toISOString(),
}
updateDb((db) => {
if (!Array.isArray(db.contactRequests)) db.contactRequests = []
db.contactRequests.unshift(request)
})
res.status(201).json({ ok: true, id: request.id })
})
app.get('/api/contact-requests', authMiddleware, (_req, res) => {
const requests = readDb().contactRequests || []
res.json(requests)
})
app.patch('/api/contact-requests/:id', authMiddleware, (req, res) => {
const { status } = req.body || {}
if (!['new', 'read', 'archived'].includes(status)) {
return res.status(400).json({ error: 'وضعیت نامعتبر است' })
}
let updated = null
updateDb((db) => {
if (!Array.isArray(db.contactRequests)) db.contactRequests = []
const i = db.contactRequests.findIndex((r) => r.id === req.params.id)
if (i === -1) return
db.contactRequests[i] = { ...db.contactRequests[i], status }
updated = db.contactRequests[i]
})
if (!updated) return res.status(404).json({ error: 'درخواست یافت نشد' })
res.json(updated)
})
app.delete('/api/contact-requests/:id', authMiddleware, (req, res) => {
let found = false
updateDb((db) => {
if (!Array.isArray(db.contactRequests)) db.contactRequests = []
const i = db.contactRequests.findIndex((r) => r.id === req.params.id)
if (i !== -1) {
db.contactRequests.splice(i, 1)
found = true
}
})
if (!found) return res.status(404).json({ error: 'درخواست یافت نشد' })
res.status(204).end()
})
app.delete('/api/media/:id', authMiddleware, (req, res) => {
let removed = null
updateDb((db) => {