AMS.java
package fr.avenirsesr.portfolio.api.domain.model;
import fr.avenirsesr.portfolio.api.domain.model.enums.EAmsStatus;
import java.time.Instant;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class AMS {
@Setter(AccessLevel.NONE)
private final UUID id;
@Setter(AccessLevel.NONE)
private final User user;
@Setter(AccessLevel.NONE)
private final String title;
@Setter(AccessLevel.NONE)
private final Instant startDate;
@Setter(AccessLevel.NONE)
private final Instant endDate;
private EAmsStatus status;
private List<SkillLevel> skillLevels;
private List<Trace> traces;
private Set<Cohort> cohorts;
private AMS(UUID id, User user, String title, Instant startDate, Instant endDate) {
this.id = id;
this.user = user;
this.title = title;
this.startDate = startDate;
this.endDate = endDate;
}
public static AMS create(UUID id, User user, String title, Instant startDate, Instant endDate) {
var ams = new AMS(id, user, title, startDate, endDate);
ams.setSkillLevels(List.of());
ams.setTraces(List.of());
ams.setCohorts(Set.of());
ams.setStatus(EAmsStatus.NOT_STARTED);
return ams;
}
public static AMS toDomain(
UUID id,
User user,
String title,
Instant startDate,
Instant endDate,
List<SkillLevel> skillLevels,
List<Trace> traces,
Set<Cohort> cohorts,
EAmsStatus status) {
var ams = new AMS(id, user, title, startDate, endDate);
ams.setSkillLevels(skillLevels);
ams.setTraces(traces);
ams.setCohorts(cohorts);
ams.setStatus(status);
return ams;
}
}