From 0d8230e93c8b39e9623780230f7612c4bc76c4c0 Mon Sep 17 00:00:00 2001 From: NW Date: Mon, 25 Nov 2024 23:07:01 +0000 Subject: [PATCH 1/2] Add handleCategoryUpdate and handleEditCategory --- .../adminHandlers/adminProductHandler.js | 70 ++++++++++++++++++- src/index.js | 5 ++ 2 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/handlers/adminHandlers/adminProductHandler.js b/src/handlers/adminHandlers/adminProductHandler.js index 51012d1..f0cb537 100644 --- a/src/handlers/adminHandlers/adminProductHandler.js +++ b/src/handlers/adminHandlers/adminProductHandler.js @@ -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; diff --git a/src/index.js b/src/index.js index 84fcde5..4951c5b 100644 --- a/src/index.js +++ b/src/index.js @@ -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) { From ea7f5dbd11794b6d656466944510f4f9162e50eb Mon Sep 17 00:00:00 2001 From: NW Date: Mon, 25 Nov 2024 23:58:05 +0000 Subject: [PATCH 2/2] Update handleCategoryUpdate --- src/handlers/adminHandlers/adminProductHandler.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/handlers/adminHandlers/adminProductHandler.js b/src/handlers/adminHandlers/adminProductHandler.js index f0cb537..684198e 100644 --- a/src/handlers/adminHandlers/adminProductHandler.js +++ b/src/handlers/adminHandlers/adminProductHandler.js @@ -255,6 +255,7 @@ export default class AdminProductHandler { const state = userStates.get(chatId); if (!state || !state.action?.startsWith('edit_category_')) { + console.log('[DEBUG] Invalid state or action:', state); return false; } @@ -266,11 +267,15 @@ export default class AdminProductHandler { try { const [locationId, categoryId] = state.action.replace('edit_category_', '').split('_'); + console.log('[DEBUG] Updating category:', { locationId, categoryId, newName: msg.text }); + await db.runAsync( 'UPDATE categories SET name = ? WHERE id = ? AND location_id = ?', [msg.text, categoryId, locationId] ); + console.log('[DEBUG] Category updated successfully'); + await bot.sendMessage( chatId, `✅ Название категории обновлено на "${msg.text}".`, @@ -288,7 +293,7 @@ export default class AdminProductHandler { userStates.delete(chatId); } catch (error) { - console.error('Ошибка обновления категории:', error); + console.error('[ERROR] Error updating category:', error); await bot.sendMessage(chatId, 'Ошибка обновления категории. Пожалуйста, попробуйте снова.'); }