прибрался
This commit is contained in:
41
server.js
41
server.js
@@ -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' });
|
||||
|
||||
Reference in New Issue
Block a user