add contact request
This commit is contained in:
+2
-1
@@ -16,7 +16,8 @@ const defaultDb = () => ({
|
||||
clients: [],
|
||||
stats: [],
|
||||
blogPosts: [],
|
||||
media: []
|
||||
media: [],
|
||||
contactRequests: []
|
||||
})
|
||||
|
||||
function ensureDataDir() {
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user