✅ Удалён блок с вопросами из student/tests/show
✅ Контроллер не загружает questions.answers
✅ Предупреждение что вопросы будут при тестировании
✅ Блок с попытками (пока пусто)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Login Modal в навигации
✅ Навигация: Админка (для админов), Мои курсы, Тесты
✅ StudentCourseController - список и просмотр курсов
✅ StudentTestController - список и просмотр тестов
✅ Маршруты /student/courses, /student/tests
✅ Views для курсов и тестов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Каждый элемент создаёт отдельную запись
✅ organization_id = null для пользователей/групп
✅ organization_id заполняется для организаций
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Modal с TomSelect для всех полей
✅ Курс, Организация, Группа, Пользователь - всё с поиском
✅ Динамическое добавление элементов через JSON
✅ edit.blade.php с загрузкой существующих элементов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Добавлен use User и use Group
✅ exclude_organization_id для поиска пользователей
✅ Исключение пользователей из текущей организации
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ AJAX добавление/удаление пользователей
✅ AJAX добавление/удаление групп
✅ Modal редактирования организации
✅ Фильтрация GroupSearchController для организаций
✅ Счётчики обновляются без перезагрузки
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Проверка organization_id только для групп организации
✅ Общие группы добавляют любых пользователей
✅ Разные placeholder для общих/организационных групп
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Проверка на дубликаты (не добавлять если уже в группе)
✅ Фильтрация поиска по организации группы
✅ UserSearchController фильтрует по organization_id
✅ Подсказка в modal для групп организации
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Маршрут: POST /groups/{group}/users/add
✅ Контроллер принимает Group из маршрута
✅ JavaScript обновлён
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Проверка на начатые тесты перед редактированием
✅ Если тестов нет — можно менять курс и дату начала
✅ Если тесты есть — только дата окончания и заметка
✅ Предупреждение в modal
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Группировка по курсу + датам в index
✅ Сводная статистика (пользователи/группы/организации)
✅ show с раздельными списками по типам
✅ Modals для быстрого добавления
✅ Удаление edit/update - управление через show
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ CourseAssignmentController (index, create, store)
✅ create.blade.php с тремя tags-input (пользователи/группы/организации)
✅ Разные цвета бейджей (зелёный/голубой/синий)
✅ UserSearchController API
✅ index.blade.php список назначений
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ edit.blade.php — выбор организации через searchable-select
✅ create.blade.php — выбор организации через searchable-select
✅ Контроллер не передаёт $organizations
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ API возвращает группы при пустом запросе с user_id
✅ Фильтрация по названию только если query не пустой
✅ Компонент передаёт user_id при загрузке тегов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ $user->load('groups') для eager loading
✅ Проверка !empty(trim()) для groups поля
✅ Не очищаем группы если поле пустое
✅ Загрузка существующих тегов при инициализации
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ API не возвращает группы при пустом запросе
✅ onItemAdd вместо onChange для добавления тегов
✅ Очистка поля после добавления тега
✅ Фильтрация по организации пользователя
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ this.options[value] вместо select.options[value]
✅ Проверка data перед addTag
✅ Исправлена группировка whereNull + orWhere в API
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ API groups/search принимает user_id параметр
✅ Фильтр: общие + группы организации ИЛИ только общие
✅ tags-input передаёт user_id в API
✅ Очистка кэша для GroupPolicy
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Новый компонент x-tags-input
✅ Поле ввода + бейджи ниже
✅ Typeahead поиск групп
✅ Крестик для удаления
✅ Синие бейджи как в WordPress
✅ Отдельный компонент (не влияет на searchable-select)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ TomSelect с мультивыбором (теги как в WordPress)
✅ API /api/groups/search для поиска групп
✅ Обновлён edit.blade.php пользователя
✅ Обновлён show.blade.php пользователя
✅ Компонент поддерживает multiple=true
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ 1. Ссылка 'Все пользователи' в просмотре организации
✅ 2. Кнопка '+' для группы с предустановленной организацией
✅ 3. Упрощён выбор типа группы (по умолчанию организация)
✅ 4. Исправлена ошибка GroupPolicy::update()
✅ 5. Управление группами в редактировании пользователя
✅ Показ всех доступных групп (общие + организации)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ required_if валидация для organization_id
✅ JavaScript убирает required при выборе общей группы
✅ Очищает значение при переключении на общую группу
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ TomSelect библиотека (15KB vs 100KB у Select2)
✅ Blade компонент x-searchable-select
✅ API endpoint /api/organizations/search
✅ Поиск по названию и ИНН
✅ AJAX загрузка данных
✅ Используется в create.blade.php для групп
✅ Модульная архитектура - можно использовать для других полей
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Modal добавления в группу на странице пользователя
✅ Метод addUser — добавление пользователя в группу
✅ Метод removeUser — удаление пользователя из группы
✅ Фильтр доступных групп (общие + группы организации)
✅ Проверка: нельзя добавить в группу другой организации
✅ Маршруты: POST /users/{user}/groups/add, DELETE /groups/{group}/users/{user}/remove
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ create.blade.php — форма создания с выбором типа группы
✅ store метод — сохранение группы
✅ index.blade.php — кнопка создать, фильтр по пользователю
✅ edit метод — фильтр пользователей по организации
✅ Ссылка Группы в сайдбаре для Admin/Manager
✅ Полные маршруты для groups
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ edit.blade.php передаёт existing_image
✅ update() сохраняет existing_image если новый файл не загружен
✅ update() удаляет старую картинку если загружена новая
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Логирование каждого шага
✅ Валидация картинок вручную
✅ Проверка hasFile для каждого ответа
✅ Логирование сохранения
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ Используем $request->input('answers') вместо $validated['answers']
✅ is_correct проверяем как строку '1'
✅ Картинки загружаются через $request->file()
✅ Обновлены store и update методы
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
✅ store/update используют $request->file() для загрузки
✅ toggleCorrect работает с icon.classList вместо innerHTML
✅ Исправлено наследование цвета иконки от кнопки
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>