File size: 2,584 Bytes
339f372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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)