Додані повідомлення та перепрацьована структура застосунку та api

This commit is contained in:
2026-03-15 00:25:10 +02:00
parent 85483b85bb
commit 4bc9c11512
101 changed files with 5763 additions and 2546 deletions

View File

@@ -1,9 +1,10 @@
const db = require("../config/db");
const Notification = require("../utils/notification.js");
function lockingStand(user, data) {
return new Promise((resolve, reject) => {
const sheepId = Number(data.sheep_id) || null;
if (!user.possibilities.can_view_stand) {
return reject(new Error("Forbidden: no rights to view stand"));
}
@@ -18,7 +19,7 @@ function lockingStand(user, data) {
function unlockingStand(user, data) {
return new Promise((resolve, reject) => {
const sheepId = Number(data.sheep_id) || null;
if (!user.possibilities.can_view_stand) {
return reject(new Error("Forbidden: no rights to view stand"));
}
@@ -33,7 +34,7 @@ function unlockingStand(user, data) {
function updateStand(user, data) {
return new Promise((resolve, reject) => {
const sheepId = Number(data.sheep_id) || null;
if (!user.possibilities.can_view_stand) {
return reject(new Error("Forbidden: no rights to view stand"));
}
@@ -52,11 +53,36 @@ function updateStand(user, data) {
const insertSql = `
INSERT INTO stand_schedule_history
(stand_schedule_id, sheep_id, created_at)
VALUES (?, ?, ?)`;
(stand_schedule_id, sheep_id, editor, created_at)
VALUES (?, ?, ?, ?)`;
db.run(insertSql, [Number(data.id), sheepId, Date.now()], function (err) {
db.run(insertSql, [Number(data.id), sheepId, user.id, Date.now()], function (err) {
if (err) return reject(err);
if (sheepId === null) {
let text = [
'Звільнилося місце на одному зі стендів. Хто перший — той встигне 😉',
'Є одне вільне місце на стенді. Запис відкрито — не проґавте 😉',
'У одного зі стендів з’явилося вільне місце. Встигніть записатися!',
'Раптова можливість! На стенді є вільне місце. Забронюйте його зараз 📋',
'Одне місце стало вільним. Можливо, це саме ваше? 😉',
'Стенд чекає нового учасника. Вільне місце вже доступне 📋',
'Є шанс приєднатися — одне місце звільнилося 😊',
'Вільне місце на стенді довго не чекатиме. Записуйтеся!',
'Оголошуємо міні-набір: доступне одне місце на стенді.',
'Щойно звільнилося місце. Хто швидший — той з нами 🚀',
'З’явилася можливість долучитися до стенду. Кількість місць обмежена!',
'Останнє вільне місце на стенді шукає свого власника.'
];
let randomMessage = text[Math.floor(Math.random() * text.length)];
Notification.sendStand({
title: "Звільнилось місце",
body: randomMessage,
page: `/stand/card/${data.stand_id}`
});
}
resolve({ update: "ok", id: data.id, historyId: this.lastID });
});
});