package es.tatvil.taiageweb.config;

import es.tatvil.taiageweb.modelo.Usuario;
import es.tatvil.taiageweb.repositorio.UsuarioRepository;
import org.springframework.boot.CommandLineRunner;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;

import java.util.HashSet;
import java.util.Set;

/**
 * Crea el usuario admin la primera vez que arranca la aplicación.
 * IMPORTANTE: cambia la contraseña en cuanto puedas desde el panel /admin/usuarios.
 */
@Component
public class DataInitializer implements CommandLineRunner {

    private final UsuarioRepository repo;
    private final PasswordEncoder encoder;

    public DataInitializer(UsuarioRepository repo, PasswordEncoder encoder) {
        this.repo = repo;
        this.encoder = encoder;
    }

    @Override
    public void run(String... args) {
        if (repo.findByEmail("admin@taiage.es").isEmpty()) {
            Usuario admin = new Usuario();
            admin.setEmail("admin@taiage.es");
            admin.setPassword(encoder.encode("Cambiar1!"));
            admin.setHabilitado(true);
            admin.setRoles(new HashSet<>(Set.of("ROLE_ADMIN", "ROLE_PAGADO", "ROLE_USER")));
            repo.save(admin);
            System.out.println("""
                    ╔══════════════════════════════════════════════╗
                    ║  ADMIN creado → admin@taiage.es / Cambiar1!  ║
                    ║  Cambia la contraseña en /admin/usuarios      ║
                    ╚══════════════════════════════════════════════╝
                    """);
        }
    }
}
