Files
sts-avto/server.js
2026-05-05 13:54:28 +05:00

95 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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}`);
});