прибрался

This commit is contained in:
2026-05-07 22:11:01 +05:00
parent f421398787
commit ad237df23e
3 changed files with 184 additions and 21 deletions

View File

@@ -47,6 +47,12 @@ db.run(`ALTER TABLE bookings ADD COLUMN wishes TEXT`, (err) => {
}
});
db.run(`ALTER TABLE bookings ADD COLUMN status TEXT DEFAULT 'новая'`, (err) => {
if (err && !err.message.includes('duplicate column name')) {
console.error('Migration error:', err);
}
});
db.run(`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
login TEXT NOT NULL UNIQUE,
@@ -130,8 +136,8 @@ app.post('/api/bookings', (req, res) => {
if (!name || !phone || !adults || !checkin || !checkout) {
return res.status(400).json({ error: 'Missing required fields' });
}
const stmt = db.prepare(`INSERT INTO bookings (name, phone, adults, children, checkin_date, checkout_date, wishes)
VALUES (?, ?, ?, ?, ?, ?, ?)`);
const stmt = db.prepare(`INSERT INTO bookings (name, phone, adults, children, checkin_date, checkout_date, wishes, status)
VALUES (?, ?, ?, ?, ?, ?, ?, 'новая')`);
stmt.run(name, phone, parseInt(adults), parseInt(children || 0), checkin, checkout, wishes || null, function(err) {
if (err) {
console.error(err);
@@ -142,13 +148,40 @@ app.post('/api/bookings', (req, res) => {
stmt.finalize();
});
app.get('/api/admin/bookings', authenticateToken, (req, res) => {
db.all(`SELECT id, name, phone, adults, children, checkin_date, checkout_date, wishes, status, created_at
FROM bookings ORDER BY checkin_date ASC`, [], (err, rows) => {
if (err) {
console.error(err);
return res.status(500).json({ error: 'Database error' });
}
res.json(rows);
});
});
app.patch('/api/admin/bookings/:id', authenticateToken, requireAdmin, (req, res) => {
const bookingId = parseInt(req.params.id);
const { status } = req.body;
const validStatuses = ['новая', 'оплачена', 'зарезервирована', 'заселена', 'выехала', 'отменена'];
if (!status || !validStatuses.includes(status)) {
return res.status(400).json({ error: 'Invalid status. Valid: ' + validStatuses.join(', ') });
}
db.run(`UPDATE bookings SET status = ? WHERE id = ?`, [status, bookingId], (err) => {
if (err) return res.status(500).json({ error: 'Database error' });
db.get(`SELECT id, name, phone, adults, children, checkin_date, checkout_date, wishes, status, created_at FROM bookings WHERE id = ?`, [bookingId], (err, row) => {
if (err) return res.status(500).json({ error: 'Database error' });
res.json({ message: 'Status updated', booking: row });
});
});
});
app.get('/api/bookings', (req, res) => {
const providedKey = req.headers['x-api-key'];
if (!providedKey || providedKey !== API_KEY) {
return res.status(401).json({ error: 'Invalid or missing API key' });
}
db.all(`SELECT id, name, phone, adults, children, checkin_date, checkout_date, wishes, created_at
FROM bookings ORDER BY created_at DESC`, (err, rows) => {
db.all(`SELECT id, name, phone, adults, children, checkin_date, checkout_date, wishes, status, created_at
FROM bookings ORDER BY checkin_date ASC`, (err, rows) => {
if (err) {
console.error(err);
return res.status(500).json({ error: 'Database error' });