package fr.titionfire.ffsaf.rest.data; import fr.titionfire.ffsaf.data.model.CompetitionGuestModel; import fr.titionfire.ffsaf.data.model.CompetitionModel; import fr.titionfire.ffsaf.data.model.RegisterModel; import fr.titionfire.ffsaf.utils.Categorie; import fr.titionfire.ffsaf.utils.CompetitionSystem; import fr.titionfire.ffsaf.utils.RegisterMode; import io.quarkus.runtime.annotations.RegisterForReflection; import lombok.AllArgsConstructor; import lombok.Data; import java.util.Date; import java.util.List; import java.util.stream.Stream; @Data @AllArgsConstructor @RegisterForReflection public class CompetitionData { private Long id; private String name; private String description; private String adresse; private String uuid; private Date date; private Date toDate; private CompetitionSystem system; private RegisterMode registerMode; private Date startRegister; private Date endRegister; private boolean publicVisible; private Long club; private String clubName; private String owner; private List registers; private boolean canEdit; private String data1; private String data2; private String data3; private String data4; public static CompetitionData fromModel(CompetitionModel model) { if (model == null) return null; return new CompetitionData(model.getId(), model.getName(), model.getDescription(), model.getAdresse(), model.getUuid(), model.getDate(), model.getTodate(), model.getSystem(), model.getRegisterMode(), model.getStartRegister(), model.getEndRegister(), model.isPublicVisible(), model.getClub().getId(), model.getClub().getName(), model.getOwner(), null, false, model.getData1(), model.getData2(), model.getData3(), model.getData4()); } public static CompetitionData fromModelLight(CompetitionModel model) { if (model == null) return null; CompetitionData out = new CompetitionData(model.getId(), model.getName(), model.getDescription(), model.getAdresse(), "", model.getDate(), model.getTodate(), null, model.getRegisterMode(), model.getStartRegister(), model.getEndRegister(), model.isPublicVisible(), null, model.getClub().getName(), "", null, false, "", "", "", ""); if (model.getRegisterMode() == RegisterMode.HELLOASSO) { out.setData1(model.getData1()); out.setData2(model.getData2()); } return out; } public CompetitionData addInsc(List insc, List guests) { this.registers = Stream.concat( insc.stream() .map(i -> new SimpleRegister(i.getMembre().getId(), i.getOverCategory(), i.getWeight(), i.getCategorie(), (i.getClub() == null) ? null : i.getClub().getId(), (i.getClub() == null) ? null : i.getClub().getName())), guests.stream() .map(i -> new SimpleRegister(i.getId() * -1, 0, i.getWeight(), i.getCategorie(), null, i.getClub()))).toList(); return this; } @Data @AllArgsConstructor @RegisterForReflection public static class SimpleRegister { long id; int overCategory; Integer weight; Categorie categorie; Long club; String club_str; } }