302 lines
31 KiB
JavaScript
302 lines
31 KiB
JavaScript
let db;
|
||
|
||
function init(database) {
|
||
db = database;
|
||
return initDatabase();
|
||
}
|
||
|
||
function initDatabase() {
|
||
return new Promise((resolve, reject) => {
|
||
db.serialize(() => {
|
||
db.run(`CREATE TABLE IF NOT EXISTS leads (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT NOT NULL,
|
||
phone TEXT NOT NULL,
|
||
message TEXT,
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS users (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
login TEXT NOT NULL UNIQUE,
|
||
password_hash TEXT NOT NULL,
|
||
full_name TEXT,
|
||
role TEXT NOT NULL DEFAULT 'admin',
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS hero_settings (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
key TEXT UNIQUE NOT NULL,
|
||
value TEXT
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS hero_stats (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
label TEXT NOT NULL,
|
||
value TEXT NOT NULL,
|
||
is_dynamic INTEGER DEFAULT 0,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS about_settings (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
key TEXT UNIQUE NOT NULL,
|
||
value TEXT
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS about_features (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
svg_icon TEXT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS services (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
svg_icon TEXT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
items TEXT DEFAULT '[]',
|
||
is_large INTEGER DEFAULT 0,
|
||
sort_order INTEGER DEFAULT 0,
|
||
is_active INTEGER DEFAULT 1
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS work_schemes (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
svg_icon TEXT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
items TEXT DEFAULT '[]',
|
||
sort_order INTEGER DEFAULT 0,
|
||
is_active INTEGER DEFAULT 1
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS process_steps (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
step_number INTEGER NOT NULL,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS equipment (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT NOT NULL,
|
||
brand TEXT,
|
||
image_path TEXT,
|
||
qty TEXT,
|
||
specs TEXT DEFAULT '[]',
|
||
age_badge TEXT DEFAULT '',
|
||
sort_order INTEGER DEFAULT 0,
|
||
is_active INTEGER DEFAULT 1
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS equipment_gallery (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
equipment_id INTEGER NOT NULL,
|
||
image_path TEXT NOT NULL,
|
||
sort_order INTEGER DEFAULT 0,
|
||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
FOREIGN KEY (equipment_id) REFERENCES equipment(id) ON DELETE CASCADE
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS geo_regions (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT NOT NULL,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS geo_settings (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
key TEXT UNIQUE NOT NULL,
|
||
value TEXT
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS licenses (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
svg_icon TEXT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS license_gallery (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
image_path TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS public_activities (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
svg_icon TEXT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS activity_gallery (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
title TEXT NOT NULL,
|
||
description TEXT,
|
||
image_path TEXT,
|
||
sort_order INTEGER DEFAULT 0
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS partners (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
name TEXT NOT NULL,
|
||
logo_path TEXT,
|
||
sort_order INTEGER DEFAULT 0,
|
||
is_active INTEGER DEFAULT 1
|
||
)`);
|
||
db.run(`CREATE TABLE IF NOT EXISTS settings (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
key TEXT UNIQUE NOT NULL,
|
||
value TEXT
|
||
)`);
|
||
|
||
db.get(`SELECT COUNT(*) as cnt FROM settings`, (err, row) => {
|
||
if (row && row.cnt > 0) { resolve(); return; }
|
||
seedAll().then(resolve).catch(reject);
|
||
});
|
||
});
|
||
});
|
||
}
|
||
|
||
async function seedAll() {
|
||
const run = (sql, params) => new Promise(r => db.run(sql, params || [], () => r()));
|
||
const runEach = (sql, rows) => Promise.all(rows.map(r => {
|
||
const stmt = db.prepare(sql);
|
||
return new Promise(res => {
|
||
stmt.run(...r, function() { stmt.finalize(); res(); });
|
||
});
|
||
}));
|
||
|
||
const heroDefaults = [
|
||
['hero_bg', './img/hero-bg.webp'], ['badge_text', 'Лицензии СРО и НОСТРОЙ'],
|
||
['h1_text', 'демонтаж нефтегазопроводов по России, утилизация отходов'],
|
||
['subtitle', 'Собственная спецтехника. Лицензии СРО и НОСТРОЙ. Более {years} лет опыта. Работаем на опасных производственных объектах без привлечения субподрядчиков.'],
|
||
['phone_800', '8 (800) 555-29-31'], ['phone_ekb', '8 (343) 237-25-66'],
|
||
['email', 'sts_zakaz@mail.ru'], ['address', 'г. Екатеринбург, ул. Московская, 11, оф. 702'],
|
||
['button1_text', 'Оставить заявку'], ['button1_link', '#contacts'],
|
||
['button2_text', 'Наши услуги'], ['button2_link', '#services']
|
||
];
|
||
await runEach('INSERT OR IGNORE INTO hero_settings (key, value) VALUES (?, ?)', heroDefaults);
|
||
|
||
await runEach('INSERT INTO hero_stats (label, value, is_dynamic, sort_order) VALUES (?, ?, ?, ?)', [
|
||
['лет на рынке', '{years}', 1, 0], ['объектов выполнено', '200', 0, 1],
|
||
['единиц техники', '80', 0, 2], ['федеральных округов', '6', 0, 3]
|
||
]);
|
||
|
||
await runEach('INSERT OR IGNORE INTO about_settings (key, value) VALUES (?, ?)', [
|
||
['section_subtitle', 'Компания «СТС-Авто» — надёжный партнёр в сфере демонтажа, оказывает услуги по демонтажу магистральных трубопроводов, объектов инфраструктуры, зданий, сооружений и разделки жд транспорта, с последующей переработкой и утилизацией для предприятий. Мы работаем на всей территории Российской Федерации.'],
|
||
['main_heading', 'Собственная техника и полный контроль'], ['about_image', './img/hero-bg.webp'],
|
||
['paragraph_1', 'Наш автопарк состоит из более чем 80 единиц современной спецтехники, возраст которой не превышает 5 лет. Мы используем экскаваторы, краны, погрузчики, самосвалы и тралы ведущих мировых производителей: KAMAZ, Komatsu, Zoomlion, SDLG, Соболь, УАЗ.'],
|
||
['paragraph_2', 'Все работы выполняются исключительно силами компании — без привлечения субподрядчиков. Это гарантирует полное соответствие качества, сроков и ответственности на каждом этапе проекта.'],
|
||
['paragraph_3', 'Мы работаем в самых сложных условиях: труднодоступные районы, заболоченные территории, Крайний Север. Гибкие варианты оплаты: работаем по договору, включая вариант расчёта трубой за услуги (бартер с металлоломом после демонтажа).']
|
||
]);
|
||
|
||
await runEach('INSERT INTO about_features (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
|
||
['<path d="M18.92 6.01C18.72 5.42 18.16 5 17.5 5h-11c-.66 0-1.21.42-1.42 1.01L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h12v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-8l-2.08-5.99zM6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zM5 11l1.5-4.5h11L19 11H5z"/>', 'Парк техники не старше 5 лет', 'Более 80 единиц современной спецтехники', 0],
|
||
['<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>', 'Без субподрядчиков', 'Все работы силами компании', 1],
|
||
['<path d="M19.35 10.04A7.49 7.49 0 0012 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"/>', 'Сложные условия', 'Болота, Крайний Север, труднодоступные районы', 2],
|
||
['<path d="M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z"/>', 'Гибкая оплата', 'Включая расчёт трубой (бартер)', 3]
|
||
]);
|
||
|
||
const svcIcon = {
|
||
demolish: '<path d="M19.35 10.04A7.49 7.49 0 0012 4C9.11 4 6.6 5.64 5.35 8.04A5.994 5.994 0 000 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"/>',
|
||
recult: '<path d="M14 6l-3.75 5 2.85 3.8-1.6 1.2C9.81 13.75 7 10 7 10l-6 8h22L14 6z"/>',
|
||
clear: '<path d="M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z"/>',
|
||
lezh: '<path d="M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-9 14H4v-3h7v3zm0-5H4V8h7v3zm9 5h-7v-3h7v3zm0-5h-7V8h7v3z"/>',
|
||
scheme1: '<path d="M20 8h-3V4H3c-1.1 0-2 .9-2 2v11h2c0 1.66 1.34 3 3 3s3-1.34 3-3h6c0 1.66 1.34 3 3 3s3-1.34 3-3h2v-5l-3-4zM6 18.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm13.5-9l1.96 2.5H17V9.5h2.5zm-1.5 9c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"/>',
|
||
scheme2: '<path d="M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z"/>'
|
||
};
|
||
|
||
await runEach('INSERT INTO services (svg_icon, title, description, items, is_large, sort_order) VALUES (?, ?, ?, ?, ?, ?)', [
|
||
[svcIcon.demolish, 'Демонтаж нефтегазопроводов, утилизация отходов', 'Выполняем полный цикл работ по демонтажу магистральных и промысловых трубопроводов любого типа и диаметра, а также утилизацию отходов.', '["Нефтепроводы, газопроводы, водоводы — все типы магистральных и промысловых сетей","Полный цикл: от вскрытия и вырезки дефектных участков до вывоза и сдачи металлолома","Работа с трубопроводами любого диаметра в любых климатических условиях","Разделка ж/д транспорта, переработка и утилизация для предприятий"]', 1, 0],
|
||
[svcIcon.recult, 'Техническая рекультивация земель', 'Восстановление нарушенных земель после проведения строительных и ремонтных работ.', '["Засыпка траншей, планировка, восстановление плодородного слоя","Работа с нефтезагрязнёнными, засоленными землями","Сдача по актам под контролем экологов"]', 0, 1],
|
||
[svcIcon.clear, 'Расчистка территории от мелколесья и ДКР', 'Подготовка полосы отвода: расчистка от древесно-кустарниковой растительности.', '["Валка, корчёвка, дробление пней","Планировка полосы отвода","Мульчеры и кусторезы на гусеничном ходу"]', 0, 2],
|
||
[svcIcon.lezh, 'Устройство лежневого настила', 'Обеспечение проходимости для тяжёлой техники по болотам и слабым грунтам.', '["Изготовление секций из бревен и бруса","Укладка перекрытий на слабых грунтах","Обеспечение проходимости для тяжёлой гусеничной техники"]', 0, 3]
|
||
]);
|
||
|
||
await runEach('INSERT INTO work_schemes (svg_icon, title, description, items, sort_order) VALUES (?, ?, ?, ?, ?)', [
|
||
[svcIcon.scheme1, 'Схема 1 — с доставкой заказчику', 'Подходит для компаний, планирующих повторное использование труб или их последующую реализацию. Расходный договор для заказчика.', '["Полный цикл работ по демонтажу трубопровода","Резка и маркировка труб в соответствии с требованиями","Транспортировка демонтированных труб на указанные территории хранения","Оформление всей сопроводительной документации (акты приёма-передачи)"]', 0],
|
||
[svcIcon.scheme2, 'Схема 2 — вывоз на базы подрядчика', 'Экономически выгодное решение для заказчиков, заинтересованных в минимизации затрат. Доходный договор для заказчика.', '["Полный цикл работ по демонтажу трубопровода","Перевозка и размещение на сертифицированных площадках временного хранения ООО «СТС-АВТО»","Покупка трубы в земле — заказчик получает доход от металлолома","Оформление полного пакета закрывающей документации"]', 1]
|
||
]);
|
||
|
||
await runEach('INSERT INTO process_steps (step_number, title, description, sort_order) VALUES (?, ?, ?, ?)', [
|
||
[1, 'Заявка', 'Вы оставляете заявку на сайте, по электронной почте или звоните нам. Наши специалисты оперативно свяжутся с вами для обсуждения деталей проекта, объёма работ и сроков.', 0],
|
||
[2, 'Выезд специалиста и оценка', 'Наш инженер выезжает на объект для проведения осмотра, оценки объёма работ, определения необходимых ресурсов и техники. По результатам составляется техническое задание и подписывается договор.', 1],
|
||
[3, 'Выполнение работ', 'Мобилизуем технику и персонал на объект. Выполняем демонтаж, утилизацию отходов и рекультивацию в соответствии с проектной документацией. Ежедневные отчёты о ходе работ.', 2],
|
||
[4, 'Сдача объекта', 'По завершении всех работ подписывается акт выполненных работ, передаётся полный комплект закрывающей документации. При необходимости — сопровождение сдачи объекта экспертизе.', 3]
|
||
]);
|
||
|
||
await runEach('INSERT INTO equipment (name, brand, image_path, qty, specs, age_badge, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)', [
|
||
['Автокран КАМАЗ КС-55717К-3', 'КАМАЗ', 'ks-45721.webp', '10 единиц', '[{"label":"Грузоподъёмность","value":"25 тонн"},{"label":"Вылет стрелы","value":"до 28 м"},{"label":"Шасси","value":"Полноприводное 6×6"}]', 'Не старше 5 лет', 0],
|
||
['Автокран Zoomlion ZTC300', 'Zoomlion', 'zoomlion-ztc300.webp', '2 единицы', '[{"label":"Грузоподъёмность","value":"30 тонн"},{"label":"Вылет стрелы","value":"до 32 м"},{"label":"Стрела","value":"Телескопическая"}]', 'Не старше 5 лет', 1],
|
||
['Экскаватор гусеничный Komatsu PC210-10M0', 'Komatsu', 'komatsu-pc210.webp', '20 единиц', '[{"label":"Масса","value":"21 тонна"},{"label":"Объём ковша","value":"1.0–1.2 м³"},{"label":"Глубина копания","value":"до 6.5 м"}]', 'Не старше 5 лет', 2],
|
||
['Экскаватор гусеничный Zoomlion ZE215E', 'Zoomlion', 'zoomlion-ze215e.webp', '2 единицы', '[{"label":"Масса","value":"21.5 тонны"},{"label":"Объём ковша","value":"1.1 м³"},{"label":"Аналог","value":"Komatsu PC210"}]', 'Не старше 5 лет', 3],
|
||
['Погрузчик колёсный SDLG LG933L', 'SDLG', 'sdlg-lg933l.webp', '2 единицы', '[{"label":"Грузоподъёмность","value":"3 тонны"},{"label":"Объём ковша","value":"1.7 м³"},{"label":"Тип","value":"Колёсный"}]', 'Не старше 5 лет', 4],
|
||
['Соболь 4×4 грузо-пассажирский', 'Соболь', 'sobol-4x4.webp', '13 единиц', '[{"label":"Грузоподъёмность","value":"до 1 т"},{"label":"Привод","value":"Полный 4×4"},{"label":"Назначение","value":"Доставка персонала и запчастей"}]', 'Не старше 5 лет', 5],
|
||
['Ломовоз с КМУ (кран-манипулятор)', 'Ломовоз', 'lomovoz-kmu.webp', '3 единицы', '[{"label":"Грузоподъёмность КМУ","value":"до 8 т"},{"label":"Объём платформы","value":"до 20 м³"},{"label":"Назначение","value":"Вывоз металлолома"}]', 'Не старше 5 лет', 6],
|
||
['Седельный тягач Камаз 53504-50', 'КамАЗ', 'kamaz-53504.webp', '6 единиц', '[{"label":"Тяговый класс","value":"до 50 т"},{"label":"Привод","value":"Полный привод"},{"label":"Назначение","value":"Перевозка негабарита и тралов"}]', 'Не старше 5 лет', 7],
|
||
['Экскаватор-амфибия на понтонной платформе', 'Амфибия', 'amfibia.webp', '4 единицы', '[{"label":"Тип","value":"Гусеничный, плавающий"},{"label":"Работает","value":"На болотах и водных преградах"},{"label":"Особенность","value":"Там, где не видно дна"}]', 'Не старше 5 лет', 8],
|
||
['УАЗ Пикап (полный привод)', 'УАЗ', 'uaz-pickup.webp', 'Несколько единиц', '[{"label":"Привод","value":"Полный привод"},{"label":"Назначение","value":"Доставка запчастей на месторождения"}]', 'Не старше 5 лет', 9],
|
||
['Тралы тяжеловозы для доставки спецтехники', 'Тралы', 'tral-1.webp', '3 единицы', '[{"label":"Тяговый класс","value":"до 50 т"},{"label":"Назначение","value":"Доставка спецтехники на объекты"}]', 'Не старше 5 лет', 10]
|
||
]);
|
||
|
||
await runEach('INSERT INTO geo_regions (name, sort_order) VALUES (?, ?)', [
|
||
['УрФО', 0], ['СФО', 1], ['ПФО', 2], ['СЗФО', 3], ['ДФО', 4], ['ЮФО', 5]
|
||
]);
|
||
|
||
await runEach('INSERT OR IGNORE INTO geo_settings (key, value) VALUES (?, ?)', [
|
||
['section_subtitle', 'Работаем во всех федеральных округах Российской Федерации. Особые условия для труднодоступных районов Крайнего Севера и заболоченных территорий.'],
|
||
['difficult_title', '🔧 Труднодоступные районы'],
|
||
['difficult_desc', 'Мы располагаем специализированной техникой для работы в болотах ХМАО-Югры, ЯНАО, на севере Красноярского края, в Иркутской области. Гусеничная техника и лежневые настилы обеспечивают проходимость даже в самых сложных условиях.'],
|
||
['map_image', './img/geo.webp']
|
||
]);
|
||
|
||
const licIcon = '<path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm-2 16l-5-5 1.41-1.41L10 14.17l7.59-7.59L18 9l-8 8z"/>';
|
||
await runEach('INSERT INTO licenses (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
|
||
[licIcon, 'СРО — допуск к работам на опасных объектах', 'Свидетельство о допуске к работам на опасных производственных объектах нефтегазового комплекса.', 0],
|
||
[licIcon, 'Членство в НОСТРОЙ', 'Действующее членство в Национальном объединении строителей — допуск к строительным работам.', 1],
|
||
['<path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 14l-5-5 1.41-1.41L12 14.17l7.59-7.59L21 8l-9 9z"/>', 'Сертификат ISO 9001 (качество)', 'Международный стандарт системы менеджмента качества.', 2],
|
||
['<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>', 'Сертификат OHSAS 18001 (охрана труда)', 'Система менеджмента охраны труда и промышленной безопасности.', 3],
|
||
['<path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/>', 'Договор ДМС для сотрудников', 'Добровольное медицинское страхование всех сотрудников.', 4],
|
||
['<path d="M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zM6 20V4h5v7h7v9H6z"/>', 'Лицензия на заготовку и переработку лома', 'Лицензия на заготовку, хранение и переработку лома черных металлов.', 5]
|
||
]);
|
||
|
||
await runEach('INSERT INTO license_gallery (title, description, image_path, sort_order) VALUES (?, ?, ?, ?)', [
|
||
['Лицензия на отходы I–IV класса опасности', '№ (66) -6527 - СТО/П от 21 мая 2019 г.', 'license-otxody.webp', 0],
|
||
['Лицензия на лом черных и цветных металлов', '№ ЛМ 000092 от 31 октября 2018 г.', 'license-lom.webp', 1]
|
||
]);
|
||
|
||
await runEach('INSERT INTO public_activities (svg_icon, title, description, sort_order) VALUES (?, ?, ?, ?)', [
|
||
['<path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/>', 'Спонсорство', 'Поддерживаем спортивные, культурные и общественные мероприятия в регионах присутствия. Помогаем развитию местных сообществ.', 0],
|
||
['<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/>', 'Благотворительность', 'Оказываем адресную помощь детским домам, ветеранским и общественным организациям. Участвуем в социальных проектах.', 1],
|
||
['<path d="M17 8C8 10 5.9 16.2 3 19l-.47.74A7.02 7.02 0 004.5 22.5C7.35 21.83 9.76 19.7 11.85 17.61 14.64 14.79 18.35 11.36 17 8zM10.05 16.81c-.73.73-1.93 1.1-2.94.63-1.03-.48-1.22-1.76-.54-2.67.62-.83 1.84-1.13 2.96-.69.63.25 1.12.69 1.48 1.15l-.96 1.58zM21.19 2.09c-.45-.5-1.15-.66-1.77-.42l-3.02 1.17 3.76 3.76 1.17-3.02c.24-.62.08-1.32-.42-1.77l.28.28z"/>', 'Экология', 'Участвуем в экологических акциях, субботниках и проектах по озеленению. Следим за снижением воздействия на окружающую среду.', 2],
|
||
['<path d="M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82zM12 3L1 9l11 6 9-4.91V17h2V9L12 3z"/>', 'Поддержка образования', 'Сотрудничаем с профильными вузами и колледжами. Организуем практику для студентов, участвуем в ярмарках вакансий.', 3]
|
||
]);
|
||
|
||
await runEach('INSERT INTO activity_gallery (title, description, image_path, sort_order) VALUES (?, ?, ?, ?)', [
|
||
['Благодарственное письмо', 'За вклад в развитие региона', 'thanks-1.webp', 0],
|
||
['Благодарственное письмо', 'За благотворительную деятельность', 'thanks-2.webp', 1]
|
||
]);
|
||
|
||
await runEach('INSERT INTO partners (name, logo_path, sort_order) VALUES (?, ?, ?)', [
|
||
['Газпром', 'газпром.webp', 0], ['Роснефть', 'роснефть.webp', 1],
|
||
['Сибур', 'сибур.webp', 2], ['Сургутнефтегаз', 'сургутнефтегаз.webp', 3],
|
||
['Транснефть', 'транснефть.webp', 4]
|
||
]);
|
||
|
||
await runEach('INSERT OR IGNORE INTO settings (key, value) VALUES (?, ?)', [
|
||
['contact_phone_800', '8 (800) 555-29-31'], ['contact_phone_ekb', '8 (343) 237-25-66'],
|
||
['contact_email', 'sts_zakaz@mail.ru'], ['contact_address', 'г. Екатеринбург, ул. Московская, 11, оф. 702'],
|
||
['contact_work_hours', 'Пн–Пт: 9:00 – 18:00|Сб: 10:00 – 15:00'], ['contact_map_image', './img/secret.webp'],
|
||
['footer_text', '© {year} ООО «СТС-Авто». Все права защищены. 16+'],
|
||
['form_title', 'Оставить заявку'], ['form_subtitle', 'Заполните форму и мы свяжемся с вами в ближайшее время'],
|
||
['section_services_subtitle', 'Полный спектр работ по демонтажу и утилизации трубопроводной инфраструктуры. Работаем на опасных производственных объектах с собственным парком спецтехники.'],
|
||
['section_schemes_subtitle', 'Мы разработали гибкие схемы работы, позволяющие выбрать оптимальное решение с учётом ваших целей и бюджета.'],
|
||
['section_process_subtitle', 'Прозрачный и отлаженный процесс от первого обращения до сдачи объекта. Каждый этап контролируется инженерами компании.'],
|
||
['section_equipment_subtitle', 'Собственный парк из более чем 80 единиц современной спецтехники ведущих мировых производителей. Возраст всей техники — не старше 5 лет.'],
|
||
['section_licenses_subtitle', 'Все необходимые допуски и сертификаты для выполнения работ на опасных производственных объектах. Полная прозрачность и соответствие требованиям законодательства РФ.'],
|
||
['section_activity_subtitle', 'Компания «СТС-Авто» активно участвует в социальной и общественной жизни регионов присутствия.'],
|
||
['section_partners_subtitle', 'Сотрудничаем с ведущими компаниями нефтегазового сектора.'],
|
||
['section_contacts_subtitle', 'Оставьте заявку или позвоните — мы оперативно ответим на ваши вопросы и рассчитаем стоимость работ.']
|
||
]);
|
||
}
|
||
|
||
function getDb() {
|
||
return db;
|
||
}
|
||
|
||
module.exports = { init, getDb };
|