UNPKG

create-exam-project

Version:

Create exam projects with React + Express + PostgreSQL in seconds

99 lines (83 loc) 2.9 kB
const express = require('express'); const router = express.Router(); const { authMiddleware } = require('../middleware/auth'); const { Application, User } = require('../models'); // Получить все заявки пользователя router.get('/', authMiddleware, async (req, res) => { try { const applications = await Application.findAll({ where: { userId: req.user.id }, order: [['createdAt', 'DESC']], include: [{ model: User, as: 'user', attributes: ['fullName', 'email', 'phone'] }] }); res.json(applications); } catch (error) { console.error(error); res.status(500).json({ message: 'Ошибка при получении заявок' }); } }); // Создать новую заявку router.post('/', authMiddleware, async (req, res) => { try { const { type, data } = req.body; const application = await Application.create({ userId: req.user.id, type, data, status: 'new' }); res.status(201).json({ message: 'Заявка создана успешно', application }); } catch (error) { console.error(error); res.status(500).json({ message: 'Ошибка при создании заявки' }); } }); // Обновить заявку (для отзывов) router.put('/:id', authMiddleware, async (req, res) => { try { const { id } = req.params; const { rating, review } = req.body; const application = await Application.findOne({ where: { id, userId: req.user.id } }); if (!application) { return res.status(404).json({ message: 'Заявка не найдена' }); } // Проверка, что заявка завершена if (application.status !== 'completed') { return res.status(400).json({ message: 'Отзыв можно оставить только после завершения' }); } await application.update({ rating, review }); res.json({ message: 'Отзыв добавлен', application }); } catch (error) { console.error(error); res.status(500).json({ message: 'Ошибка при обновлении заявки' }); } }); // Удалить заявку router.delete('/:id', authMiddleware, async (req, res) => { try { const { id } = req.params; const result = await Application.destroy({ where: { id, userId: req.user.id, status: 'new' } }); if (result === 0) { return res.status(404).json({ message: 'Заявка не найдена или не может быть удалена' }); } res.json({ message: 'Заявка удалена' }); } catch (error) { console.error(error); res.status(500).json({ message: 'Ошибка при удалении заявки' }); } }); module.exports = router;