Cohort.java

package fr.avenirsesr.portfolio.api.domain.model;

import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Cohort {
  @Setter(AccessLevel.NONE)
  private final UUID id;

  private String name;

  private String description;

  private ProgramProgress programProgress;

  private Set<User> users;

  private Set<AMS> amsSet;

  private Cohort(UUID id, String name, String description, ProgramProgress programProgress) {
    this.id = id;
    this.name = name;
    this.description = description;
    this.programProgress = programProgress;
  }

  public static Cohort create(
      UUID id, String name, String description, ProgramProgress programProgress) {
    Cohort cohort = new Cohort(id, name, description, programProgress);
    cohort.setUsers(new HashSet<>());
    cohort.setAmsSet(new HashSet<>());
    return cohort;
  }

  public static Cohort toDomain(
      UUID id,
      String name,
      String description,
      ProgramProgress programProgress,
      Set<User> users,
      Set<AMS> amsSet) {
    Cohort group = new Cohort(id, name, description, programProgress);
    group.setUsers(users);
    group.setAmsSet(amsSet);
    return group;
  }
}