package fr.titionfire.ffsaf.rest.data;

import fr.titionfire.ffsaf.data.model.LicenceModel;
import fr.titionfire.ffsaf.data.model.MembreModel;
import fr.titionfire.ffsaf.data.model.RegisterModel;
import fr.titionfire.ffsaf.net2.data.SimpleClubModel;
import fr.titionfire.ffsaf.utils.Utils;
import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.List;

@Data
@AllArgsConstructor
@RegisterForReflection
public class SimpleRegisterComb {
    private long id;
    private String fname;
    private String lname;
    private String genre;
    private String categorie;
    private SimpleClubModel club;
    private Integer licence;
    private Integer weight;
    private int overCategory;
    private boolean hasLicenceActive;
    private boolean lockEdit;

    public static SimpleRegisterComb fromModel(RegisterModel register, List<LicenceModel> licences) {
        MembreModel membreModel = register.getMembre();
        return new SimpleRegisterComb(membreModel.getId(), membreModel.getFname(), membreModel.getLname(),
                membreModel.getGenre().name(),
                (register.getCategorie() == null) ? "Catégorie inconnue" : register.getCategorie().getName(),
                SimpleClubModel.fromModel(register.getClub()), membreModel.getLicence(), register.getWeight(),
                register.getOverCategory(),
                licences.stream().anyMatch(l -> l.isValidate() && l.getSaison() == Utils.getSaison()),
                register.isLockEdit());
    }
}
