from aiogram import Router, F from aiogram.types import Message, CallbackQuery from aiogram.fsm.context import FSMContext from app.database import requests as rq from app.keyboards import admin_keyboards as kb from app.database.requests import get_user_test_results, get_all_test_answers from app.states import TestStates from app.middleware.authentification import admin_check router = Router() @router.message(F.text == "Просмотреть результаты тестов") async def name_provide(message: Message, state: FSMContext): if not await admin_check(message, {}): await message.answer("У вас нет доступа к админ-панели") return await state.set_state(TestStates.name_get) await message.answer("Введите имя пользователя, результаты тестов которого хотите посмотреть. Для просмотра результатов теста пользователь должен быть зарегистрирован!") @router.message(TestStates.name_get) async def show_user_results(message: Message, state: FSMContext): results = await get_user_test_results(message.text) if isinstance(results, str): await message.answer(results, reply_markup=kb.admin_main) return if not results: await message.answer( "📊 У пользователя пока нет результатов тестов", reply_markup=kb.admin_main ) return response = f"📋 Результаты тестов пользователя {message.text}:\n\n" for result in results: completed_date = result['completed_at'].strftime("%d.%m.%Y %H:%M") response += ( f"🔷 Тест: {result['test_name']}\n" f"📅 Дата прохождения: {completed_date}\n" f"📊 Набрано баллов: {result['score'] if result['score'] is not None else 'Нет баллов'}\n" f"📝 Результат: {result['result'] if result['result'] else 'Не определен'}\n" f"{'─' * 30}\n\n" ) await message.answer( response, reply_markup=kb.admin_main, parse_mode="HTML" ) @router.callback_query(F.data == 'admin_to_main') async def return_to_main(callback: CallbackQuery): await callback.answer('Возвращаемся в меню') await callback.message.answer('Здравствуйте! Что Вы хотите сделать?', reply_markup=kb.admin_main)