хз
This commit is contained in:
18
server.js
18
server.js
@@ -70,6 +70,13 @@ if (!API_KEY) {
|
||||
}
|
||||
|
||||
app.use(express.json());
|
||||
app.use((req, res, next) => {
|
||||
res.header('Access-Control-Allow-Origin', '*');
|
||||
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS');
|
||||
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
||||
if (req.method === 'OPTIONS') return res.sendStatus(200);
|
||||
next();
|
||||
});
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
const dataDir = path.join(__dirname, 'data');
|
||||
@@ -306,6 +313,7 @@ app.get('/api/admin/bookings', authenticateToken, (req, res) => {
|
||||
});
|
||||
|
||||
app.patch('/api/admin/bookings/:id', authenticateToken, requireAdmin, (req, res) => {
|
||||
console.log('PATCH /api/admin/bookings/:id hit', req.params.id, req.body);
|
||||
const bookingId = parseInt(req.params.id);
|
||||
const { status } = req.body;
|
||||
const validStatuses = ['новая', 'оплачена', 'зарезервирована', 'заселена', 'выехала', 'отменена'];
|
||||
@@ -319,7 +327,7 @@ app.patch('/api/admin/bookings/:id', authenticateToken, requireAdmin, (req, res)
|
||||
db.run(`UPDATE bookings SET status = ? WHERE id = ?`, [status, bookingId], (err) => {
|
||||
if (err) return res.status(500).json({ error: 'Database error' });
|
||||
logHistory(bookingId, req.user.id, req.user.login, 'status', oldValue, status);
|
||||
db.get(`SELECT id, name, phone, adults, children, checkin_date, checkout_date, wishes, status, room_type, created_at FROM bookings WHERE id = ?`, [bookingId], (err, row) => {
|
||||
db.get(`SELECT b.*, p.code as promocode_code FROM bookings b LEFT JOIN promocodes p ON b.promocode_id = p.id WHERE b.id = ?`, [bookingId], (err, row) => {
|
||||
if (err) return res.status(500).json({ error: 'Database error' });
|
||||
res.json({ message: 'Status updated', booking: row });
|
||||
});
|
||||
@@ -441,6 +449,14 @@ app.post('/api/promocodes/validate', (req, res) => {
|
||||
});
|
||||
});
|
||||
|
||||
// Public rooms endpoint
|
||||
app.get('/api/rooms', (req, res) => {
|
||||
db.all(`SELECT * FROM rooms WHERE is_active = 1 ORDER BY price_per_guest ASC`, [], (err, rows) => {
|
||||
if (err) { console.error('Rooms API error:', err); return res.status(500).json({ error: 'Database error' }); }
|
||||
res.json(rows);
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/api/admin/promocodes', authenticateToken, requireAdmin, (req, res) => {
|
||||
db.all(`SELECT * FROM promocodes ORDER BY created_at DESC`, [], (err, rows) => {
|
||||
if (err) return res.status(500).json({ error: 'Database error' });
|
||||
|
||||
Reference in New Issue
Block a user