User.java
package fr.avenirsesr.portfolio.api.domain.model;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class User {
private final UUID id;
private String firstName;
private String lastName;
private String email;
private boolean isStudent;
private boolean isTeacher;
// -- Student --
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String studentBio;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String studentProfilePicture;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String studentCoverPicture;
// -- Teacher --
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String teacherBio;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String teacherProfilePicture;
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.PRIVATE)
private String teacherCoverPicture;
private User(UUID id) {
this.id = id;
}
public static User create(UUID id, String firstName, String lastName) {
var user = new User(id);
user.setFirstName(firstName);
user.setLastName(lastName);
user.setStudent(false);
user.setTeacher(false);
return user;
}
public static User toDomain(
UUID id,
String firstName,
String lastName,
String email,
boolean isStudent,
String studentBio,
String studentProfilePicture,
String studentCoverPicture,
boolean isTeacher,
String teacherBio,
String teacherProfilePicture,
String teacherCoverPicture) {
var user = new User(id);
user.setFirstName(firstName);
user.setLastName(lastName);
user.setEmail(email);
user.setStudent(isStudent);
user.setStudentBio(studentBio);
user.setStudentProfilePicture(studentProfilePicture);
user.setStudentCoverPicture(studentCoverPicture);
user.setTeacher(isTeacher);
user.setTeacherBio(teacherBio);
user.setTeacherProfilePicture(teacherProfilePicture);
user.setTeacherCoverPicture(teacherCoverPicture);
return user;
}
public Student toStudent() {
return Student.of(this, studentBio, studentProfilePicture, studentCoverPicture);
}
public Teacher toTeacher() {
return Teacher.of(this, teacherBio, teacherProfilePicture, teacherCoverPicture);
}
}