<?php
// Configuración de Email para SIGVEM
// Este archivo debe ser configurado según su servidor de correo

class EmailConfig {
    // Configuración de base de datos (usando la misma configuración que database.php)
    private $host = "localhost";
    private $database = "servic27_bdventas";
    private $username = "servic27_usuario";
    private $password = "2RI+V@GGITx3";
    
    // Configuración del servidor SMTP
    // Para email del hosting servicios-jjr.com
    // IMPORTANTE: Si el envío no funciona, prueba estas alternativas:
    // 1. Cambiar puerto 587 a 465 y encryption 'tls' a 'ssl'
    // 2. Cambiar smtp_host de 'mail.servicios-jjr.com' a 'smtp.servicios-jjr.com'
    // 3. Verificar que la contraseña del email sea correcta
    private $smtp_host = 'mail.servicios-jjr.com'; // Servidor SMTP del hosting
    private $smtp_port = 587; // Puerto: 587 usa TLS, 465 usa SSL
    private $smtp_username = 'recuperamail@servicios-jjr.com'; // Email completo del hosting
    private $smtp_password = 'E3Hyb..j#lw$'; // Contraseña del email
    private $smtp_encryption = 'tls'; // 'tls' para puerto 587, 'ssl' para puerto 465
    private $use_smtp = true; // true = usar SMTP (recomendado), false = usar mail() nativa
    
    // Configuración del remitente
    private $from_email = 'recuperamail@servicios-jjr.com';
    private $from_name = 'SIGVEM Sistema';
    private $reply_to = 'recuperamail@servicios-jjr.com';
    
    // Configuración para desarrollo
    private $development_mode = false; // Cambiar a false en producción
    private $log_emails = true; // Guardar emails en archivo de log
    private $log_file = '../password_reset_links.log';
    
    // Método para obtener configuración de base de datos
    public function getDatabaseConfig() {
        return [
            'host' => $this->host,
            'database' => $this->database,
            'username' => $this->username,
            'password' => $this->password
        ];
    }
    
    // Método para obtener configuración SMTP
    public function getSMTPConfig() {
        return [
            'smtp_host' => $this->smtp_host,
            'smtp_port' => $this->smtp_port,
            'smtp_username' => $this->smtp_username,
            'smtp_password' => $this->smtp_password,
            'smtp_encryption' => $this->smtp_encryption,
            'use_smtp' => $this->use_smtp
        ];
    }
    
    // Método para obtener configuración del remitente
    public function getSenderConfig() {
        return [
            'from_email' => $this->from_email,
            'from_name' => $this->from_name,
            'reply_to' => $this->reply_to
        ];
    }
    
    // Método para obtener configuración general
    public function getConfig() {
        return [
            // Configuración de base de datos
            'database' => $this->getDatabaseConfig(),
            
            // Configuración SMTP
            'smtp' => $this->getSMTPConfig(),
            
            // Configuración del remitente
            'sender' => $this->getSenderConfig(),
            
            // Configuración para desarrollo
            'development_mode' => $this->development_mode,
            'log_emails' => $this->log_emails,
            'log_file' => $this->log_file
        ];
    }
    
    // Método para verificar si estamos en modo desarrollo
    public function isDevelopmentMode() {
        return $this->development_mode;
    }
    
    // Método para obtener la conexión a la base de datos
    public function getConnection() {
        try {
            $conn = new PDO(
                "mysql:host=" . $this->host . ";dbname=" . $this->database . ";charset=utf8",
                $this->username,
                $this->password
            );
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $conn;
        } catch(PDOException $e) {
            throw new Exception("Error de conexión a la base de datos: " . $e->getMessage());
        }
    }
}

// Crear instancia global para uso fácil
$emailConfig = new EmailConfig();

// Función helper para obtener configuración rápidamente
function getEmailConfig() {
    global $emailConfig;
    return $emailConfig->getConfig();
}

// Función helper para obtener conexión a base de datos
function getEmailDatabaseConnection() {
    global $emailConfig;
    return $emailConfig->getConnection();
}
?>
