SkillLevel.java
package fr.avenirsesr.portfolio.api.domain.model;
import fr.avenirsesr.portfolio.api.domain.model.enums.ESkillLevelStatus;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class SkillLevel {
@Setter(AccessLevel.NONE)
private final UUID id;
@Setter(AccessLevel.NONE)
private final String name;
@Setter(AccessLevel.NONE)
private final String description;
private ESkillLevelStatus status;
private List<Trace> traces;
private List<AMS> amses;
private Skill skill;
private LocalDate startDate;
private LocalDate endDate;
private SkillLevel(UUID id, String name, String description) {
this.id = id;
this.name = name;
this.description = description;
}
public static SkillLevel create(UUID id, String name, String description) {
var skillLevel = new SkillLevel(id, name, description);
skillLevel.setStatus(ESkillLevelStatus.NOT_STARTED);
skillLevel.setAmses(List.of());
skillLevel.setTraces(List.of());
return skillLevel;
}
public static SkillLevel toDomain(
UUID id,
String name,
String description,
ESkillLevelStatus status,
List<Trace> traces,
List<AMS> amses,
Skill skill,
LocalDate startDate,
LocalDate endDate) {
var skillLevel = new SkillLevel(id, name, description);
skillLevel.setStatus(status);
skillLevel.setTraces(traces);
skillLevel.setAmses(amses);
skillLevel.setSkill(skill);
skillLevel.setStartDate(startDate);
skillLevel.setEndDate(endDate);
return skillLevel;
}
@Override
public String toString() {
return "SkillLevel[%s]".formatted(id);
}
}