package sn.ladoum.bergerie.publicapi;

import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import sn.ladoum.bergerie.dto.AdminContactDto;
import sn.ladoum.bergerie.entity.enums.Role;
import sn.ladoum.bergerie.repository.UtilisateurRepository;

import java.util.List;

/**
 * Endpoints réellement publics — accessibles sans authentification.
 * Utilisés par les pages qui précèdent la connexion (ex : "compte en attente").
 */
@RestController
@RequestMapping("/public")
@RequiredArgsConstructor
public class PublicController {

    private final UtilisateurRepository utilisateurRepository;

    /** Liste des administrateurs actifs à contacter pour l'activation des comptes. */
    @GetMapping("/admins")
    @Transactional(readOnly = true)
    public List<AdminContactDto> admins() {
        return utilisateurRepository.findByRole(Role.ADMIN).stream()
                .filter(u -> Boolean.TRUE.equals(u.getActif()))
                .map(u -> AdminContactDto.builder()
                        .nom(u.getNom())
                        .email(u.getEmail())
                        .telephone(u.getTelephone())
                        .adresse(u.getAdresse())
                        .nomBergerie(u.getNomBergerie())
                        .build())
                .toList();
    }
}
