package ru.mcs.diary.student;
import jakarta.persistence.*;
import lombok.*;
import ru.mcs.diary.group.StudyGroup;
import ru.mcs.diary.teacher.Teacher;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Entity
@Table(name = "students")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name", nullable = false, length = 100)
private String firstName;
@Column(name = "last_name", nullable = false, length = 100)
private String lastName;
@Column(length = 100)
private String patronymic;
@Column(length = 20)
private String phone;
@Column(name = "birth_date")
private LocalDate birthDate;
@Column(columnDefinition = "TEXT")
private String notes;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "teacher_id", nullable = false)
private Teacher teacher;
@OneToMany(mappedBy = "student", cascade = CascadeType.ALL, orphanRemoval = true)
@Builder.Default
private List<StudentParent> studentParents = new ArrayList<>();
@ManyToMany(mappedBy = "students")
@Builder.Default
private Set<StudyGroup> groups = new HashSet<>();
public String getFullName() {
if (patronymic != null && !patronymic.isBlank()) {
return lastName + " " + firstName + " " + patronymic;
}
return lastName + " " + firstName;
}
}