/
Maksim_Shchelochok
/
Course_Work
Обзор
Документация
Войти
/
Maksim_Shchelochok
/
Course_Work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/model/ReportManager.java
74 строки
3 KB
Maksim
Создан CRUD-менеджер для класса Course
20 июн 2026, 23:00
20 июн 2026, 23:00
ff9a616
Код
Авторство
О чём код?
package model; import util.ConnectDatabase; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class ReportManager { private Connection getConnection() { return ConnectDatabase.getInstance().getConnection(); } public List<Report> getReportsForUser(User user) { List<Report> list = new ArrayList<>(); String sql; boolean needUserId = true; //Нужно ли подставлять user_id в запрос if (user.isPrivileged()) { //ADMIN — видит все sql = "SELECT c.name AS course_name, s.name AS subject_name, " + "lt.name AS lesson_type_name, slt.price " + "FROM Subject_lesson_types slt " + "JOIN Courses c ON slt.course_id = c.course_id " + "JOIN Subjects s ON slt.subject_id = s.subject_id " + "JOIN Lesson_types lt ON slt.lesson_type_id = lt.lesson_type_id"; needUserId = false; } else if ("TEACHER".equalsIgnoreCase(user.getRole())) { // Преподаватель видит позиции по своим предметам. sql = "SELECT c.name AS course_name, s.name AS subject_name, " + "lt.name AS lesson_type_name, slt.price " + "FROM Subject_lesson_types slt " + "JOIN Courses c ON slt.course_id = c.course_id " + "JOIN Subjects s ON slt.subject_id = s.subject_id " + "JOIN Lesson_types lt ON slt.lesson_type_id = lt.lesson_type_id " + "JOIN Teacher_subjects ts ON ts.subject_id = s.subject_id " + "JOIN Teachers t ON t.teacher_id = ts.teacher_id " + "WHERE t.user_id = ?"; } else { // STUDENT — курсы своей группы sql = "SELECT c.name AS course_name, s.name AS subject_name, " + "lt.name AS lesson_type_name, slt.price " + "FROM Subject_lesson_types slt " + "JOIN Courses c ON slt.course_id = c.course_id " + "JOIN Subjects s ON slt.subject_id = s.subject_id " + "JOIN Lesson_types lt ON slt.lesson_type_id = lt.lesson_type_id " + "JOIN Group_courses gc ON gc.course_id = c.course_id " + "JOIN Group_students gs ON gs.group_id = gc.group_id " + "JOIN Students st ON st.student_id = gs.student_id " + "WHERE st.user_id = ?"; } try (PreparedStatement ps = getConnection().prepareStatement(sql)) { if (needUserId) { ps.setInt(1, user.getUserId()); } try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { list.add(new Report( rs.getString("course_name"), rs.getString("subject_name"), rs.getString("lesson_type_name"), rs.getDouble("price"))); } } } catch (SQLException e) { System.out.println("Ошибка получения отчёта: " + e.getMessage()); } return list; } }