package sn.ladoum.bergerie.config;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import sn.ladoum.bergerie.entity.Utilisateur;
import sn.ladoum.bergerie.entity.enums.Role;
import sn.ladoum.bergerie.repository.UtilisateurRepository;

@Component
@RequiredArgsConstructor
@Slf4j
public class DataInitializer implements CommandLineRunner {

    private final UtilisateurRepository utilisateurRepository;
    private final PasswordEncoder passwordEncoder;

    @Value("${app.admin.email}")
    private String adminEmail;

    @Value("${app.admin.password}")
    private String adminPassword;

    @Value("${app.admin.nom}")
    private String adminNom;

    @Value("${app.admin.telephone}")
    private String telephone;

    @Override
    public void run(String... args) {
        if (utilisateurRepository.existsByEmail(adminEmail)) {
            log.info("Admin déjà présent : {}", adminEmail);
            return;
        }
        Utilisateur admin = Utilisateur.builder()
                .nom(adminNom)
                .email(adminEmail)
                .motDePasse(passwordEncoder.encode(adminPassword))
                .telephone(telephone)
                .role(Role.ADMIN)
                .actif(true)
                .build();
        utilisateurRepository.save(admin);
        log.info("===========================================");
        log.info("Admin créé : telephone={} / email={} / mot de passe={}", telephone, adminEmail, adminPassword);
        log.info("===========================================");
    }
}
