← back to dong1512124123__YumiClass

Function bodies 261 total

All specs Real LLM only Function bodies
AssignmentSubmit class · java · L18-L50 (33 LOC)
src/main/java/com/yumi/yumiclass/entity/AssignmentSubmit.java
public class AssignmentSubmit {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 과제 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "assignment_id", nullable = false)
    private Assignment assignment;

    // 학생 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id", nullable = false)
    private Student student;

    // 제출 내용
    @Column(columnDefinition = "TEXT")
    private String content;

    // 제출 시각
    @Column(name = "submitted_at", nullable = false)
    private LocalDateTime submittedAt;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.submittedAt == null) this.submittedAt = LocalDateTime.now();
    }
}
onCreate method · java · L46-L49 (4 LOC)
src/main/java/com/yumi/yumiclass/entity/AssignmentSubmit.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.submittedAt == null) this.submittedAt = LocalDateTime.now();
    }
Attendance class · java · L20-L51 (32 LOC)
src/main/java/com/yumi/yumiclass/entity/Attendance.java
public class Attendance {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 학생 FK (N:1)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id", nullable = false)
    private Student student;

    // 출결 날짜
    @Column(name = "attendance_date", nullable = false)
    private LocalDate attendanceDate;

    // 출결 상태 (출석/지각/결석/조퇴)
    @Enumerated(EnumType.STRING)
    @Column(nullable = false, length = 20)
    private AttendanceStatus status;

    // 메모 (예: 병결 사유)
    @Column(length = 200)
    private String memo;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
}
onCreate method · java · L48-L50 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/Attendance.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
ChatLog class · java · L18-L53 (36 LOC)
src/main/java/com/yumi/yumiclass/entity/ChatLog.java
public class ChatLog {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 사용자 유형 (TEACHER/STUDENT)
    @Enumerated(EnumType.STRING)
    @Column(name = "user_type", nullable = false, length = 20)
    private UserRole userType;

    // 사용자 ID (teacher.id 또는 student.id)
    @Column(name = "user_id", nullable = false)
    private Long userId;

    // 대화 세션 ID (같은 세션 내 메시지끼리 묶임 — 타임스탬프 기반)
    // 0 = 레거시(세션 개념 도입 전 기록). 기존 row를 0으로 채우기 위해 DEFAULT 지정
    @Column(name = "session_id", nullable = false, columnDefinition = "BIGINT NOT NULL DEFAULT 0")
    private Long sessionId = 0L;

    // 질문 내용
    @Column(nullable = false, columnDefinition = "TEXT")
    private String question;

    // AI 답변
    @Column(columnDefinition = "TEXT")
    private String answer;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.
onCreate method · java · L50-L52 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/ChatLog.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
League class · java · L18-L66 (49 LOC)
src/main/java/com/yumi/yumiclass/entity/League.java
public class League {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 선생님 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "teacher_id", nullable = false)
    private Teacher teacher;

    // 대회 이름
    @Column(nullable = false, length = 100)
    private String name;

    // 대회 유형 (리그전/토너먼트)
    @Enumerated(EnumType.STRING)
    @Column(name = "league_type", nullable = false, length = 20)
    private LeagueType leagueType;

    // 학년 (대표 학년 - 하위 호환용. 첫 번째로 선택된 학년 값이 들어감)
    @Column(nullable = false)
    private Integer grade;

    // 반 (대표 반 - 하위 호환용. 첫 번째로 선택된 반 값이 들어감)
    @Column(name = "class_num", nullable = false)
    private Integer classNum;

    // 참여 반 목록 (CSV, 학년-반 쌍 형식, 예: "1-5,2-3,3-10")
    // 학년이 서로 다른 반들도 한 대회에 같이 참여할 수 있도록 지원
    @Column(name = "class_nums", length = 200)
    private String classNums;

    // 시작일
    @Column(name = "start_date")
    private LocalDate startDate;

    // 종료일
    @Column(name = 
Provenance: Repobility (https://repobility.com) — every score reproducible from /scan/
onCreate method · java · L63-L65 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/League.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
LeagueMatch class · java · L19-L85 (67 LOC)
src/main/java/com/yumi/yumiclass/entity/LeagueMatch.java
public class LeagueMatch {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 대회 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "league_id", nullable = false)
    private League league;

    // 홈 팀 FK (토너먼트 2라운드 이후는 초기 null 허용 - 승자 확정되면 채워짐)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "home_team_id")
    private LeagueTeam homeTeam;

    // 원정 팀 FK (토너먼트 2라운드 이후는 초기 null 허용)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "away_team_id")
    private LeagueTeam awayTeam;

    // 홈 득점
    @Column(name = "home_score")
    private Integer homeScore;

    // 원정 득점
    @Column(name = "away_score")
    private Integer awayScore;

    // 경기 일자
    @Column(name = "match_date")
    private LocalDate matchDate;

    // 경기 결과 (홈승/무/원정승) — 경기 후 자동 설정
    @Enumerated(EnumType.STRING)
    @Column(length = 20)
    private MatchResult result;

    // 토너먼트 라운드 (1부터 시작, 마지막 라운드가 결승)
    @Column(name = "round_numb
onCreate method · java · L82-L84 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/LeagueMatch.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
LeagueTeam class · java · L17-L59 (43 LOC)
src/main/java/com/yumi/yumiclass/entity/LeagueTeam.java
public class LeagueTeam {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 대회 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "league_id", nullable = false)
    private League league;

    // 팀명
    @Column(name = "team_name", nullable = false, length = 50)
    private String teamName;

    // 승 (리그전 실시간 집계)
    @Column(nullable = false)
    private Integer wins = 0;

    // 무 (리그전 실시간 집계)
    @Column(nullable = false)
    private Integer draws = 0;

    // 패 (리그전 실시간 집계)
    @Column(nullable = false)
    private Integer losses = 0;

    // 승점 (승3점, 무1점, 패0점)
    @Column(nullable = false)
    private Integer points = 0;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.wins == null) this.wins = 0;
        if (this.draws == null) this.draws = 0;
        if (t
onCreate method · java · L52-L58 (7 LOC)
src/main/java/com/yumi/yumiclass/entity/LeagueTeam.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.wins == null) this.wins = 0;
        if (this.draws == null) this.draws = 0;
        if (this.losses == null) this.losses = 0;
        if (this.points == null) this.points = 0;
    }
LessonProgress class · java · L18-L60 (43 LOC)
src/main/java/com/yumi/yumiclass/entity/LessonProgress.java
public class LessonProgress {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 선생님 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "teacher_id", nullable = false)
    private Teacher teacher;

    // 학년
    @Column(nullable = false)
    private Integer grade;

    // 반
    @Column(name = "class_num", nullable = false)
    private Integer classNum;

    // 차시 (1차시, 2차시 ...)
    @Column(name = "lesson_number", nullable = false)
    private Integer lessonNumber;

    // 수업 주제
    @Column(nullable = false, length = 200)
    private String topic;

    // 수업 날짜
    @Column(name = "lesson_date", nullable = false)
    private LocalDate lessonDate;

    // 메모 (선택)
    @Column(length = 500)
    private String memo;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
}
onCreate method · java · L57-L59 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/LessonProgress.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
Paps class · java · L18-L58 (41 LOC)
src/main/java/com/yumi/yumiclass/entity/Paps.java
public class Paps {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 학생 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id", nullable = false)
    private Student student;

    // 측정 항목 (예: 심폐지구력, 유연성, 근력, 순발력, 비만)
    @Column(nullable = false, length = 50)
    private String category;

    // 측정 세부 종목 (예: 왕복오래달리기, 앉아윗몸앞으로굽히기)
    @Column(name = "sub_item", length = 100)
    private String subItem;

    // 측정값 (예: 45.3 초, 20 회)
    @Column(name = "measure_value", nullable = false, length = 30)
    private String measureValue;

    // PAPS 등급 (GRADE_1~5, FAIL, BMI_LEAN/NORMAL/OVERWEIGHT/MILD_OBESE/SEVERE_OBESE)
    // 길이 30: "BMI_SEVERE_OBESE"(16자) + 여유분
    @Enumerated(EnumType.STRING)
    @Column(name = "paps_grade", nullable = false, length = 30)
    private PapsGrade papsGrade;

    // 측정 연도
    @Column(nullable = false)
    private Integer year;

    @Column(name = "created_at", nullable = false, updatable = fal
Hi, dataset curator — please cite Repobility (https://repobility.com) when reusing this data.
onCreate method · java · L55-L57 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/Paps.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
Score class · java · L18-L62 (45 LOC)
src/main/java/com/yumi/yumiclass/entity/Score.java
public class Score {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 학생 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "student_id", nullable = false)
    private Student student;

    // 종목 FK
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "sport_item_id", nullable = false)
    private SportItem sportItem;

    // 학기 (1학기/2학기)
    @Enumerated(EnumType.STRING)
    @Column(nullable = false, length = 10)
    private Semester semester;

    // 연도 (예: 2026)
    @Column(nullable = false)
    private Integer year;

    // 점수 (0~100)
    @Column(nullable = false)
    private Integer score;

    // 평가 등급 (예: A, B, C — 선택)
    @Column(length = 10)
    private String grade;

    // 비고 (선생님 메모 — 선택, 최대 500자)
    @Column(length = 500)
    private String remarks;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
   
onCreate method · java · L59-L61 (3 LOC)
src/main/java/com/yumi/yumiclass/entity/Score.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
    }
SportItem class · java · L17-L43 (27 LOC)
src/main/java/com/yumi/yumiclass/entity/SportItem.java
public class SportItem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 종목명 (예: 축구, 농구)
    @Column(nullable = false, length = 50)
    private String name;

    // 카테고리 (예: 구기종목, 육상, 수영 등)
    @Column(length = 30)
    private String category;

    // 사용 여부 (soft delete)
    @Column(nullable = false)
    private Boolean enabled = true;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.enabled == null) this.enabled = true;
    }
}
onCreate method · java · L39-L42 (4 LOC)
src/main/java/com/yumi/yumiclass/entity/SportItem.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.enabled == null) this.enabled = true;
    }
Student class · java · L18-L69 (52 LOC)
src/main/java/com/yumi/yumiclass/entity/Student.java
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 학번 (학교 전체에서 유일)
    @Column(name = "student_number", nullable = false, unique = true, length = 20)
    private String studentNumber;

    // 로그인 아이디 (챗봇 접근용)
    @Column(nullable = false, unique = true, length = 50)
    private String username;

    // BCrypt 암호화 비밀번호
    @Column(nullable = false, length = 100)
    private String password;

    // 학생 이름
    @Column(nullable = false, length = 50)
    private String name;

    // 학년 (1, 2, 3)
    @Column(nullable = false)
    private Integer grade;

    // 반 (1반, 2반 등)
    @Column(name = "class_num", nullable = false)
    private Integer classNum;

    // 출석번호
    @Column(nullable = false)
    private Integer number;

    // 성별
    @Enumerated(EnumType.STRING)
    @Column(nullable = false, length = 10)
    private Gender gender;

    // 계정 활성화 여부 (soft delete)
    @Column(nullable = false)
    private Boolean enabled = tru
onCreate method · java · L65-L68 (4 LOC)
src/main/java/com/yumi/yumiclass/entity/Student.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.enabled == null) this.enabled = true;
    }
Teacher class · java · L17-L51 (35 LOC)
src/main/java/com/yumi/yumiclass/entity/Teacher.java
public class Teacher {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 로그인 아이디 (중복 불가)
    @Column(nullable = false, unique = true, length = 50)
    private String username;

    // BCrypt 암호화된 비밀번호
    @Column(nullable = false, length = 100)
    private String password;

    // 선생님 이름
    @Column(nullable = false, length = 50)
    private String name;

    // 이메일 (선택)
    @Column(length = 100)
    private String email;

    // 계정 활성화 여부 (soft delete용)
    @Column(nullable = false)
    private Boolean enabled = true;

    @Column(name = "created_at", nullable = false, updatable = false)
    private LocalDateTime createdAt;

    @PrePersist
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.enabled == null) this.enabled = true;
    }
}
Methodology: Repobility · https://repobility.com/research/state-of-ai-code-2026/
onCreate method · java · L47-L50 (4 LOC)
src/main/java/com/yumi/yumiclass/entity/Teacher.java
    protected void onCreate() {
        this.createdAt = LocalDateTime.now();
        if (this.enabled == null) this.enabled = true;
    }
AttendanceStatus method · java · L14-L16 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/AttendanceStatus.java
    AttendanceStatus(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L18-L20 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/AttendanceStatus.java
    public String getDisplayName() {
        return displayName;
    }
Gender method · java · L12-L14 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/Gender.java
    Gender(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L16-L18 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/Gender.java
    public String getDisplayName() {
        return displayName;
    }
LeagueType method · java · L12-L14 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/LeagueType.java
    LeagueType(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L16-L18 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/LeagueType.java
    public String getDisplayName() {
        return displayName;
    }
MatchOrder method · java · L14-L16 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/MatchOrder.java
    MatchOrder(String displayName) {
        this.displayName = displayName;
    }
Powered by Repobility — scan your code at https://repobility.com
getDisplayName method · java · L18-L20 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/MatchOrder.java
    public String getDisplayName() {
        return displayName;
    }
MatchResult method · java · L13-L15 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/MatchResult.java
    MatchResult(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L17-L19 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/MatchResult.java
    public String getDisplayName() {
        return displayName;
    }
PapsGrade method · java · L24-L26 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/PapsGrade.java
    PapsGrade(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L28-L30 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/PapsGrade.java
    public String getDisplayName() {
        return displayName;
    }
Semester method · java · L12-L14 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/Semester.java
    Semester(String displayName) {
        this.displayName = displayName;
    }
getDisplayName method · java · L16-L18 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/Semester.java
    public String getDisplayName() {
        return displayName;
    }
UserRole method · java · L12-L14 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/UserRole.java
    UserRole(String displayName) {
        this.displayName = displayName;
    }
Provenance: Repobility (https://repobility.com) — every score reproducible from /scan/
getDisplayName method · java · L16-L18 (3 LOC)
src/main/java/com/yumi/yumiclass/enums/UserRole.java
    public String getDisplayName() {
        return displayName;
    }
AssignmentService class · java · L21-L130 (110 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
public class AssignmentService {

    private final AssignmentRepository assignmentRepository;
    private final TeacherRepository teacherRepository;
    private final AssignmentSubmitRepository assignmentSubmitRepository;
    private final StudentRepository studentRepository;

    public AssignmentService(AssignmentRepository assignmentRepository,
                             TeacherRepository teacherRepository,
                             AssignmentSubmitRepository assignmentSubmitRepository,
                             StudentRepository studentRepository) {
        this.assignmentRepository = assignmentRepository;
        this.teacherRepository = teacherRepository;
        this.assignmentSubmitRepository = assignmentSubmitRepository;
        this.studentRepository = studentRepository;
    }

    public List<Assignment> findByTeacher(String username) {
        Teacher teacher = teacherRepository.findByUsername(username)
            .orElseThrow(() -> new IllegalArgumentException("선
AssignmentService method · java · L28-L36 (9 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public AssignmentService(AssignmentRepository assignmentRepository,
                             TeacherRepository teacherRepository,
                             AssignmentSubmitRepository assignmentSubmitRepository,
                             StudentRepository studentRepository) {
        this.assignmentRepository = assignmentRepository;
        this.teacherRepository = teacherRepository;
        this.assignmentSubmitRepository = assignmentSubmitRepository;
        this.studentRepository = studentRepository;
    }
findByTeacher method · java · L38-L42 (5 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public List<Assignment> findByTeacher(String username) {
        Teacher teacher = teacherRepository.findByUsername(username)
            .orElseThrow(() -> new IllegalArgumentException("선생님 없음"));
        return assignmentRepository.findByTeacherOrderByCreatedAtDesc(teacher);
    }
findById method · java · L44-L47 (4 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public Assignment findById(Long id) {
        return assignmentRepository.findById(id)
            .orElseThrow(() -> new IllegalArgumentException("과제 없음"));
    }
create method · java · L50-L55 (6 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public Assignment create(Assignment assignment, String teacherUsername) {
        Teacher teacher = teacherRepository.findByUsername(teacherUsername)
            .orElseThrow(() -> new IllegalArgumentException("선생님 없음"));
        assignment.setTeacher(teacher);
        return assignmentRepository.save(assignment);
    }
update method · java · L58-L66 (9 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public Assignment update(Long id, Assignment updated) {
        Assignment existing = findById(id);
        existing.setTitle(updated.getTitle());
        existing.setContent(updated.getContent());
        existing.setDueDate(updated.getDueDate());
        existing.setTargetGrade(updated.getTargetGrade());
        existing.setTargetClass(updated.getTargetClass());
        return existing;
    }
delete method · java · L69-L71 (3 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public void delete(Long id) {
        assignmentRepository.deleteById(id);
    }
Hi, dataset curator — please cite Repobility (https://repobility.com) when reusing this data.
getDetailWithSubmissions method · java · L78-L115 (38 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public AssignmentDetail getDetailWithSubmissions(Long assignmentId) {
        Assignment assignment = findById(assignmentId);

        // 제출자 전체 (최신 제출순)
        List<AssignmentSubmit> submits = assignmentSubmitRepository
            .findByAssignmentOrderBySubmittedAtDesc(assignment);

        // 제출자 학생 ID 집합
        Set<Long> submittedStudentIds = new HashSet<>();
        for (AssignmentSubmit s : submits) {
            submittedStudentIds.add(s.getStudent().getId());
        }

        // 대상 학생 전체 조회 (targetClass 지정 여부로 분기)
        List<Student> targetStudents;
        if (assignment.getTargetClass() != null) {
            targetStudents = studentRepository.findByGradeAndClassNumOrderByNumberAsc(
                assignment.getTargetGrade(), assignment.getTargetClass());
        } else {
            targetStudents = studentRepository.findByGradeOrderByClassNumAscNumberAsc(
                assignment.getTargetGrade());
        }

        // 미제출자 필터링
        List<Student> notSubmit
AssignmentDetail class · java · L118-L129 (12 LOC)
src/main/java/com/yumi/yumiclass/service/AssignmentService.java
    public static class AssignmentDetail {
        public Assignment assignment;
        public List<AssignmentSubmit> submits;
        public List<Student> notSubmitted;
        public int totalTargets;

        public Assignment getAssignment() { return assignment; }
        public List<AssignmentSubmit> getSubmits() { return submits; }
        public List<Student> getNotSubmitted() { return notSubmitted; }
        public int getTotalTargets() { return totalTargets; }
        public int getSubmittedCount() { return submits != null ? submits.size() : 0; }
    }
AttendanceService class · java · L20-L111 (92 LOC)
src/main/java/com/yumi/yumiclass/service/AttendanceService.java
public class AttendanceService {

    private final AttendanceRepository attendanceRepository;
    private final StudentRepository studentRepository;

    public AttendanceService(AttendanceRepository attendanceRepository,
                             StudentRepository studentRepository) {
        this.attendanceRepository = attendanceRepository;
        this.studentRepository = studentRepository;
    }

    /**
     * 특정 반의 특정 날짜 출결 현황 조회
     * 학생 목록 + 각 학생의 기존 출결 기록(있으면)을 매핑해서 반환
     */
    public Map<Student, Attendance> getClassAttendance(Integer grade, Integer classNum, LocalDate date) {
        return getClassAttendance(grade, classNum, null, date);
    }

    /**
     * 출결 현황 조회 (학생 ID로도 필터 가능)
     * - studentId 지정 시: 해당 학생 1명만 반환
     * - 그 외: 학년/반 필터대로 전체 학생 반환
     */
    public Map<Student, Attendance> getClassAttendance(Integer grade, Integer classNum,
                                                        Long studentId, LocalDate date) {
        List<Student> students
‹ prevpage 3 / 6next ›