Add handleCategoryUpdate and handleEditCategory

This commit is contained in:
NW 2024-11-25 23:07:01 +00:00
parent 7fd4cfa671
commit 0d8230e93c
2 changed files with 74 additions and 1 deletions

View File

@ -249,7 +249,75 @@ export default class AdminProductHandler {
}
);
}
// Обновление категории
static async handleCategoryUpdate(msg) {
const chatId = msg.chat.id;
const state = userStates.get(chatId);
if (!state || !state.action?.startsWith('edit_category_')) {
return false;
}
if (!this.isAdmin(msg.from.id)) {
await bot.sendMessage(chatId, 'Неавторизованный доступ.');
return;
}
try {
const [locationId, categoryId] = state.action.replace('edit_category_', '').split('_');
await db.runAsync(
'UPDATE categories SET name = ? WHERE id = ? AND location_id = ?',
[msg.text, categoryId, locationId]
);
await bot.sendMessage(
chatId,
`✅ Название категории обновлено на "${msg.text}".`,
{
reply_markup: {
inline_keyboard: [[
{
text: '« Назад к категориям',
callback_data: `prod_category_${locationId}_${categoryId}`
}
]]
}
}
);
userStates.delete(chatId);
} catch (error) {
console.error('Ошибка обновления категории:', error);
await bot.sendMessage(chatId, 'Ошибка обновления категории. Пожалуйста, попробуйте снова.');
}
return true;
}
// Редактирование категории
static async handleEditCategory(callbackQuery) {
if (!this.isAdmin(callbackQuery.from.id)) {
return;
}
const chatId = callbackQuery.message.chat.id;
const [locationId, categoryId] = callbackQuery.data.replace('edit_category_', '').split('_');
userStates.set(chatId, { action: `edit_category_${locationId}_${categoryId}` });
await bot.editMessageText(
'Пожалуйста, введите новое название категории:',
{
chat_id: chatId,
message_id: callbackQuery.message.message_id,
reply_markup: {
inline_keyboard: [[
{ text: '❌ Отмена', callback_data: `prod_category_${locationId}_${categoryId}` }
]]
}
}
);
}
static async handleCategorySelection(callbackQuery) {
if (!this.isAdmin(callbackQuery.from.id)) {
return;

View File

@ -93,6 +93,11 @@ bot.on('message', async (msg) => {
return;
}
// Check for category update input
if (await adminProductHandler.handleCategoryUpdate(msg)) {
return;
}
logDebug(msg.text, 'handleMessage');
switch (msg.text) {