Commit Graph
68 Commits
Author SHA1 Message Date
mirivladandQwen-Coder b8d9584f7d Feat: Расписание для студентов
✅ ScheduleController (index, calendar)
✅ Временная шкала событий
✅ Календарь (FullCalendar)
✅ Фильтры (сегодня/неделя/месяц)
✅ Статистика (курсы/тесты)
✅ Ссылка в сайдбаре

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 16:27:59 +08:00
mirivladandQwen-Coder 4ee0b55643 Feat: Landing Page (welcome)
✅ Hero секция с градиентом
✅ Преимущества платформы (3 карточки)
✅ Публичные курсы (до 6)
✅ CTA секция
✅ Footer
✅ Login Modal
✅ Адаптивный дизайн

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 11:51:39 +08:00
mirivladandQwen-Coder dcb89380aa Feat: Учебная часть для студентов
✅ Login Modal в навигации
✅ Навигация: Админка (для админов), Мои курсы, Тесты
✅ StudentCourseController - список и просмотр курсов
✅ StudentTestController - список и просмотр тестов
✅ Маршруты /student/courses, /student/tests
✅ Views для курсов и тестов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 11:47:46 +08:00
mirivladandQwen-Coder 2ba9ab5157 Fix: Сохранение organization_id для каждого элемента
✅ Каждый элемент создаёт отдельную запись
✅ organization_id = null для пользователей/групп
✅ organization_id заполняется для организаций

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 09:57:52 +08:00
mirivladandQwen-Coder b313d96bfc Feat: Выбор типа получателя в заявке
✅ Select: Пользователь/Группа/Организация
✅ Динамическое переключение полей
✅ Валидация выбора получателя
✅ Убрано поле Организация из info блока

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 09:51:30 +08:00
mirivladandQwen-Coder b01d8431c8 Fix: Организация берётся из items_json
✅ organization_id из первого элемента items
✅ Удалена валидация organization_id
✅ index.blade.php обрабатывает NULL organization

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 09:22:12 +08:00
mirivladandQwen-Coder c65da15feb Feat: Заявки - Modal для добавления элементов
✅ Modal с TomSelect для всех полей
✅ Курс, Организация, Группа, Пользователь - всё с поиском
✅ Динамическое добавление элементов через JSON
✅ edit.blade.php с загрузкой существующих элементов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-02 08:50:55 +08:00
mirivladandQwen-Coder 38b2f043bf Fix: Добавлена организация в элементы заявки
✅ organization relationship в CourseRequestItem
✅ Отображение в show.blade.php
✅ Загрузка в контроллере

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-01 16:19:56 +08:00
mirivladandQwen-Coder c6f303fac7 Fix: Улучшена форма заявки на курсы
✅ Организация - необязательна
✅ Новая структура элемента: Курс → Получатели → Даты
✅ Поддержка множественных user_ids/group_ids
✅ Обновлены create, edit, store, update, createAssignments

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-01 16:19:04 +08:00
mirivladandQwen-Coder 87f20ef702 Feat: Заявки на курсы (Course Requests) - базовая структура
✅ Миграции: course_requests, course_request_items
✅ Models: CourseRequest, CourseRequestItem
✅ CourseRequestController (CRUD + approve/reject)
✅ CourseRequestPolicy
✅ Маршруты и регистрация Policy
✅ index.blade.php

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-01 15:48:41 +08:00
mirivladandQwen-Coder 21a836ef4d Fix: Организация - пользователи и группы
✅ Добавлен use User и use Group
✅ exclude_organization_id для поиска пользователей
✅ Исключение пользователей из текущей организации

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-04-01 08:35:38 +08:00
mirivladandQwen-Coder de64be24eb Feat: UI/UX организаций как в назначениях
✅ AJAX добавление/удаление пользователей
✅ AJAX добавление/удаление групп
✅ Modal редактирования организации
✅ Фильтрация GroupSearchController для организаций
✅ Счётчики обновляются без перезагрузки

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 16:57:26 +08:00
mirivladandQwen-Coder 7f19cedeee Fix: Правильная группировка where в UserSearchController
✅ where(function() {...}) для группировки условий
✅ organization_id фильтруется корректно

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 16:46:47 +08:00
mirivladandQwen-Coder 500ff03309 Fix: Общие группы могут добавлять любых пользователей
✅ Проверка organization_id только для групп организации
✅ Общие группы добавляют любых пользователей
✅ Разные placeholder для общих/организационных групп

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 16:44:31 +08:00
mirivladandQwen-Coder 98b0e7f9a9 Fix: Исправлено добавление пользователей в группы
✅ Проверка на дубликаты (не добавлять если уже в группе)
✅ Фильтрация поиска по организации группы
✅ UserSearchController фильтрует по organization_id
✅ Подсказка в modal для групп организации

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 15:57:39 +08:00
mirivladandQwen-Coder fff890e950 Fix: Исправлен маршрут groups.users.add
✅ Маршрут: POST /groups/{group}/users/add
✅ Контроллер принимает Group из маршрута
✅ JavaScript обновлён

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 15:21:50 +08:00
mirivladandQwen-Coder b456b9c589 Fix: Удалён дубликат метода update()
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 15:05:58 +08:00
mirivladandQwen-Coder 640a20ea4e Fix: Удалён дубликат метода edit()
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 15:04:35 +08:00
mirivladandQwen-Coder 7fa8fd9a64 Feat: UI/UX групп как в назначениях
✅ AJAX добавление/удаление пользователей
✅ Modal редактирования группы
✅ Список пользователей с кнопками
✅ Счётчик обновляется без перезагрузки

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 15:03:31 +08:00
mirivladandQwen-Coder ecdb8d10cb Fix: Временно отключена проверка test_results
✅ Таблица будет создана позже
✅ Пока всегда canEditCourse = true

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 09:52:14 +08:00
mirivladandQwen-Coder 95046fa59e Feat: Компромиссное редактирование назначений
✅ Проверка на начатые тесты перед редактированием
✅ Если тестов нет — можно менять курс и дату начала
✅ Если тесты есть — только дата окончания и заметка
✅ Предупреждение в modal

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 09:41:02 +08:00
mirivladandQwen-Coder ae5f09eedc Feat: AJAX для назначений + заметка + редактирование
✅ AJAX добавление через modals
✅ AJAX удаление без перезагрузки
✅ Заметка показывается если есть
✅ Modal редактирования (дата, заметка)
✅ Кнопка редактировать назначение

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 09:01:23 +08:00
mirivladandQwen-Coder cb87a76570 Fix: Маршрут show с {course} параметром
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 08:53:46 +08:00
mirivladandQwen-Coder 79d8dedb91 Feat: Группировка назначений курсов
✅ Группировка по курсу + датам в index
✅ Сводная статистика (пользователи/группы/организации)
✅ show с раздельными списками по типам
✅ Modals для быстрого добавления
✅ Удаление edit/update - управление через show

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 08:48:52 +08:00
mirivladandQwen-Coder 90a49b0f37 Fix: Имя переменной $course_assignment вместо $assignment
✅ Исправлено Route Model Binding
✅ Параметр {course_assignment} в маршруте
✅ Переменная $course_assignment в контроллере
✅ Обновлены все view файлы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-31 08:40:37 +08:00
mirivladandQwen-Coder fefe12367d Feat: Назначения с несколькими курсами
✅ tags-input для курсов (чёрные бейджи)
✅ CourseSearchController API
✅ Массовое создание назначений (курсы × получатели)
✅ Обновлён create.blade.php

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 16:31:02 +08:00
mirivladandQwen-Coder 81828de9a3 Feat: Назначения курсов с tags-input
✅ CourseAssignmentController (index, create, store)
✅ create.blade.php с тремя tags-input (пользователи/группы/организации)
✅ Разные цвета бейджей (зелёный/голубой/синий)
✅ UserSearchController API
✅ index.blade.php список назначений

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 16:06:02 +08:00
mirivladandQwen-Coder 2e1fdee017 Feat: searchable-select для организации в пользователях
✅ edit.blade.php — выбор организации через searchable-select
✅ create.blade.php — выбор организации через searchable-select
✅ Контроллер не передаёт $organizations

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 15:43:14 +08:00
mirivladandQwen-Coder 3b390c8358 Fix: Загрузка существующих групп при инициализации
✅ API возвращает группы при пустом запросе с user_id
✅ Фильтрация по названию только если query не пустой
✅ Компонент передаёт user_id при загрузке тегов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:18:11 +08:00
mirivladandQwen-Coder 3dfe1e5a2c Fix: Сохранение и загрузка групп пользователя
✅ $user->load('groups') для eager loading
✅ Проверка !empty(trim()) для groups поля
✅ Не очищаем группы если поле пустое
✅ Загрузка существующих тегов при инициализации

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:12:16 +08:00
mirivladandQwen-Coder c5a5280f56 Fix: Tags Input - полное исправление
✅ API не возвращает группы при пустом запросе
✅ onItemAdd вместо onChange для добавления тегов
✅ Очистка поля после добавления тега
✅ Фильтрация по организации пользователя

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:14:53 +08:00
mirivladandQwen-Coder 5689604004 Fix: onChange + фильтрация групп
✅ this.options[value] вместо select.options[value]
✅ Проверка data перед addTag
✅ Исправлена группировка whereNull + orWhere в API

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:08:11 +08:00
mirivladandQwen-Coder be44d09169 Fix: Фильтрация групп + исправление GroupPolicy
✅ API groups/search принимает user_id параметр
✅ Фильтр: общие + группы организации ИЛИ только общие
✅ tags-input передаёт user_id в API
✅ Очистка кэша для GroupPolicy

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:44:47 +08:00
mirivladandQwen-Coder 11c5dcaf48 Feat: Tags Input компонент для групп (WordPress style)
✅ Новый компонент x-tags-input
✅ Поле ввода + бейджи ниже
✅ Typeahead поиск групп
✅ Крестик для удаления
✅ Синие бейджи как в WordPress
✅ Отдельный компонент (не влияет на searchable-select)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:23:05 +08:00
mirivladandQwen-Coder 1f99664d19 Feat: Searchable Select для групп пользователя
✅ TomSelect с мультивыбором (теги как в WordPress)
✅ API /api/groups/search для поиска групп
✅ Обновлён edit.blade.php пользователя
✅ Обновлён show.blade.php пользователя
✅ Компонент поддерживает multiple=true

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:07:07 +08:00
mirivladandQwen-Coder 7782c59f5b Fix: UX улучшения по замечаниям
✅ 1. Ссылка 'Все пользователи' в просмотре организации
✅ 2. Кнопка '+' для группы с предустановленной организацией
✅ 3. Упрощён выбор типа группы (по умолчанию организация)
✅ 4. Исправлена ошибка GroupPolicy::update()
✅ 5. Управление группами в редактировании пользователя
✅ Показ всех доступных групп (общие + организации)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 11:28:03 +08:00
mirivladandQwen-Coder c3ed5a0edb Fix: Общая группа теперь создаётся
✅ required_if валидация для organization_id
✅ JavaScript убирает required при выборе общей группы
✅ Очищает значение при переключении на общую группу

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 11:12:50 +08:00
mirivladandQwen-Coder 4503c217eb Feat: Универсальный компонент Searchable Select
✅ 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>
2026-03-30 10:36:02 +08:00
mirivladandQwen-Coder f198afd8a0 Feat: Управление группами пользователей
✅ Modal добавления в группу на странице пользователя
✅ Метод addUser — добавление пользователя в группу
✅ Метод removeUser — удаление пользователя из группы
✅ Фильтр доступных групп (общие + группы организации)
✅ Проверка: нельзя добавить в группу другой организации
✅ Маршруты: POST /users/{user}/groups/add, DELETE /groups/{group}/users/{user}/remove

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:25:10 +08:00
mirivladandQwen-Coder 6599b8d5b6 Feat: CRUD групп с типами (организация/общие)
✅ create.blade.php — форма создания с выбором типа группы
✅ store метод — сохранение группы
✅ index.blade.php — кнопка создать, фильтр по пользователю
✅ edit метод — фильтр пользователей по организации
✅ Ссылка Группы в сайдбаре для Admin/Manager
✅ Полные маршруты для groups

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:21:17 +08:00
mirivladandQwen-Coder d27b631c8f Feat: CRUD групп пользователей
✅ GroupUserController (index, show, edit, update, destroy)
✅ Маршруты: /admin/groups
✅ Blade шаблоны: index, show, edit
✅ Управление пользователями в группах
✅ Исправлена подсветка сайдбара (Курсы/Тесты)
✅ Ссылка на Группы в сайдбаре для Curator

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 09:28:53 +08:00
mirivladandQwen-Coder 0fd33076ab Feat: Назначения курсов — Controller + Policy + Routes
✅ CourseAssignmentController (resource)
✅ CourseAssignmentPolicy
✅ Маршруты: /admin/course-assignments
✅ Регистрация в AuthServiceProvider

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 08:47:02 +08:00
mirivladandQwen-Coder d1d7eecb69 Fix: Сохранение существующих картинок при редактировании
✅ edit.blade.php передаёт existing_image
✅ update() сохраняет existing_image если новый файл не загружен
✅ update() удаляет старую картинку если загружена новая

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 16:33:14 +08:00
mirivladandQwen-Coder 523e8912af Fix: Добавлен 'image' в $fillable модели Answer
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 16:22:06 +08:00
mirivladandQwen-Coder 95850ca342 Fix: Полный дебаг QuestionController
✅ Логирование каждого шага
✅ Валидация картинок вручную
✅ Проверка hasFile для каждого ответа
✅ Логирование сохранения

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 13:34:31 +08:00
mirivladandQwen-Coder 71cb31f784 Fix: Сохранение is_correct и картинок
✅ Используем $request->input('answers') вместо $validated['answers']
✅ is_correct проверяем как строку '1'
✅ Картинки загружаются через $request->file()
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 12:40:11 +08:00
mirivladandQwen-Coder 729e39bd78 Fix: Добавлен $request в use() closure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 12:27:49 +08:00
mirivladandQwen-Coder be1ba308c9 Fix: Картинки в ответах + toggleCorrect иконка
✅ store/update используют $request->file() для загрузки
✅ toggleCorrect работает с icon.classList вместо innerHTML
✅ Исправлено наследование цвета иконки от кнопки

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:54:48 +08:00
mirivladandQwen-Coder eefd5fc5da Fix: Сохранение картинок в ответах
✅ Исправлена проверка hasText/hasImage в контроллере
✅ answer_text сохраняется как null если пустой
✅ Картинки отображаются в edit.blade.php в input-group-text
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:48:59 +08:00
mirivladandQwen-Coder ffcdd86712 Fix: Исправления для вопросов
✅ Ответы с картинками без текста теперь сохраняются
✅ TinyMCE инициализируется после DOMContentLoaded
✅ Валидация: хотя бы текст ИЛИ картинка в ответе
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 10:41:14 +08:00