package fr.titionfire.ffsaf.domain.service; import fr.titionfire.ffsaf.data.model.LicenceModel; import fr.titionfire.ffsaf.data.repository.CombRepository; import fr.titionfire.ffsaf.data.repository.LicenceRepository; import fr.titionfire.ffsaf.rest.from.LicenceForm; import io.quarkus.hibernate.reactive.panache.Panache; import io.quarkus.hibernate.reactive.panache.common.WithSession; import io.smallrye.mutiny.Uni; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.hibernate.reactive.mutiny.Mutiny; import java.util.List; @WithSession @ApplicationScoped public class LicenceService { @Inject LicenceRepository repository; @Inject CombRepository combRepository; public Uni> getLicence(long id) { return combRepository.findById(id).chain(combRepository -> Mutiny.fetch(combRepository.getLicences())); } public Uni setLicence(long id, LicenceForm form) { if (form.getId() == -1) { return combRepository.findById(id).chain(combRepository -> { LicenceModel model = new LicenceModel(); model.setMembre(combRepository); model.setSaison(form.getSaison()); model.setCertificate(form.isCertificate()); model.setValidate(form.isValidate()); return Panache.withTransaction(() -> repository.persist(model)); }); } else { return repository.findById(form.getId()).chain(model -> { model.setCertificate(form.isCertificate()); model.setValidate(form.isValidate()); return Panache.withTransaction(() -> repository.persist(model)); }); } } public Uni deleteLicence(long id) { return Panache.withTransaction(() -> repository.deleteById(id)); } }