95 lines
3.3 KiB
JavaScript
95 lines
3.3 KiB
JavaScript
require('dotenv').config();
|
||
const express = require('express');
|
||
const path = require('path');
|
||
const fs = require('fs');
|
||
|
||
const app = express();
|
||
const PORT = process.env.PORT || 3000;
|
||
|
||
// Middleware
|
||
app.use(express.json());
|
||
app.use(express.static(path.join(__dirname, 'public')));
|
||
|
||
// API: получение данных из .env
|
||
app.get('/api/config', (req, res) => {
|
||
res.json({
|
||
address: process.env.ADDRESS,
|
||
email: process.env.EMAIL,
|
||
phones: process.env.PHONES ? process.env.PHONES.split(',').map(p => p.trim()) : [],
|
||
activity: process.env.ACTIVITY,
|
||
disclaimer1: process.env.DISCLAIMER1,
|
||
disclaimer2: process.env.DISCLAIMER2
|
||
});
|
||
});
|
||
|
||
// API: сохранение заявки в JSON-файл
|
||
const dataDir = path.join(__dirname, 'data');
|
||
const requestsFile = path.join(dataDir, 'requests.json');
|
||
|
||
// Убедимся, что папка data существует
|
||
if (!fs.existsSync(dataDir)) {
|
||
fs.mkdirSync(dataDir);
|
||
}
|
||
// Инициализируем файл, если его нет
|
||
if (!fs.existsSync(requestsFile)) {
|
||
fs.writeFileSync(requestsFile, JSON.stringify([], null, 2));
|
||
}
|
||
|
||
app.post('/api/request', (req, res) => {
|
||
const newRequest = req.body;
|
||
// Проверка обязательных полей на сервере
|
||
if (!newRequest.inn || !newRequest.phone) {
|
||
return res.status(400).json({ error: 'ИНН и телефон обязательны' });
|
||
}
|
||
try {
|
||
const data = fs.readFileSync(requestsFile, 'utf8');
|
||
const requests = JSON.parse(data);
|
||
// Назначаем новый ID (максимальный + 1)
|
||
const lastId = requests.length > 0 ? Math.max(...requests.map(r => r.id || 0)) : 0;
|
||
newRequest.id = lastId + 1;
|
||
newRequest.createdAt = new Date().toISOString();
|
||
requests.push(newRequest);
|
||
fs.writeFileSync(requestsFile, JSON.stringify(requests, null, 2));
|
||
res.status(201).json({ message: 'Заявка принята', id: newRequest.id });
|
||
} catch (err) {
|
||
console.error(err);
|
||
res.status(500).json({ error: 'Ошибка сервера' });
|
||
}
|
||
});
|
||
|
||
// Маршруты страниц (без расширения .html)
|
||
app.get('/', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
||
});
|
||
app.get('/demontazh', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'demontazh.html'));
|
||
});
|
||
app.get('/ustranenie', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'ustranenie.html'));
|
||
});
|
||
app.get('/license', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'license.html'));
|
||
});
|
||
app.get('/certificates', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'certificates.html'));
|
||
});
|
||
app.get('/personnel', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'personnel.html'));
|
||
});
|
||
app.get('/fleet', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'fleet.html'));
|
||
});
|
||
app.get('/waste-license', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'waste-license.html'));
|
||
});
|
||
app.get('/scrap-license', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'scrap-license.html'));
|
||
});
|
||
app.get('/fleet-all', (req, res) => {
|
||
res.sendFile(path.join(__dirname, 'public', 'fleet-all.png'));
|
||
});
|
||
|
||
// Запуск сервера
|
||
app.listen(PORT, () => {
|
||
console.log(`Сервер запущен на http://localhost:${PORT}`);
|
||
}); |