add contact request
This commit is contained in:
+2
-1
@@ -16,7 +16,8 @@ const defaultDb = () => ({
|
|||||||
clients: [],
|
clients: [],
|
||||||
stats: [],
|
stats: [],
|
||||||
blogPosts: [],
|
blogPosts: [],
|
||||||
media: []
|
media: [],
|
||||||
|
contactRequests: []
|
||||||
})
|
})
|
||||||
|
|
||||||
function ensureDataDir() {
|
function ensureDataDir() {
|
||||||
|
|||||||
@@ -249,6 +249,70 @@ app.put('/api/media/:id', authMiddleware, (req, res) => {
|
|||||||
res.json(updated)
|
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) => {
|
app.delete('/api/media/:id', authMiddleware, (req, res) => {
|
||||||
let removed = null
|
let removed = null
|
||||||
updateDb((db) => {
|
updateDb((db) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user