115 lines
3.1 KiB
JavaScript
115 lines
3.1 KiB
JavaScript
const express = require('express')
|
|
const router = express.Router()
|
|
const { verifyToken } = require('../middleware/auth')
|
|
|
|
// In-memory хранилище для опыта работы (mock)
|
|
let experiences = [];
|
|
|
|
// GET /experience - Получить список опыта работы компании
|
|
router.get('/', verifyToken, (req, res) => {
|
|
try {
|
|
const { companyId } = req.query;
|
|
|
|
if (!companyId) {
|
|
return res.status(400).json({ error: 'companyId is required' });
|
|
}
|
|
|
|
const companyExperiences = experiences.filter(exp => exp.companyId === companyId);
|
|
res.json(companyExperiences);
|
|
} catch (error) {
|
|
console.error('Get experience error:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// POST /experience - Создать запись опыта работы
|
|
router.post('/', verifyToken, (req, res) => {
|
|
try {
|
|
const { companyId, data } = req.body;
|
|
|
|
if (!companyId || !data) {
|
|
return res.status(400).json({ error: 'companyId and data are required' });
|
|
}
|
|
|
|
const { confirmed, customer, subject, volume, contact, comment } = data;
|
|
|
|
if (!customer || !subject) {
|
|
return res.status(400).json({ error: 'customer and subject are required' });
|
|
}
|
|
|
|
const newExperience = {
|
|
id: `exp-${Date.now()}`,
|
|
companyId,
|
|
confirmed: confirmed || false,
|
|
customer,
|
|
subject,
|
|
volume: volume || '',
|
|
contact: contact || '',
|
|
comment: comment || '',
|
|
createdAt: new Date().toISOString(),
|
|
updatedAt: new Date().toISOString()
|
|
};
|
|
|
|
experiences.push(newExperience);
|
|
|
|
res.status(201).json(newExperience);
|
|
} catch (error) {
|
|
console.error('Create experience error:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// PUT /experience/:id - Обновить запись опыта работы
|
|
router.put('/:id', verifyToken, (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
const { data } = req.body;
|
|
|
|
if (!data) {
|
|
return res.status(400).json({ error: 'data is required' });
|
|
}
|
|
|
|
const index = experiences.findIndex(exp => exp.id === id);
|
|
|
|
if (index === -1) {
|
|
return res.status(404).json({ error: 'Experience not found' });
|
|
}
|
|
|
|
const updatedExperience = {
|
|
...experiences[index],
|
|
...data,
|
|
updatedAt: new Date().toISOString()
|
|
};
|
|
|
|
experiences[index] = updatedExperience;
|
|
|
|
res.json(updatedExperience);
|
|
} catch (error) {
|
|
console.error('Update experience error:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// DELETE /experience/:id - Удалить запись опыта работы
|
|
router.delete('/:id', verifyToken, (req, res) => {
|
|
try {
|
|
const { id } = req.params;
|
|
|
|
const index = experiences.findIndex(exp => exp.id === id);
|
|
|
|
if (index === -1) {
|
|
return res.status(404).json({ error: 'Experience not found' });
|
|
}
|
|
|
|
experiences.splice(index, 1);
|
|
|
|
res.json({ message: 'Experience deleted successfully' });
|
|
} catch (error) {
|
|
console.error('Delete experience error:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
module.exports = router
|
|
|