#!/bin/bash
set -e
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'

echo -e "${GREEN}============================================================${NC}"
echo -e "${GREEN}🚀 INSTALADOR PHPMAILER + BREVO - PETSTOP${NC}"
echo -e "${GREEN}============================================================${NC}"

if [ "$EUID" -ne 0 ]; then
    echo -e "${RED}❌ Ejecuta como root: sudo bash instalar_phpmailer_petstop.sh${NC}"
    exit 1
fi

API_DIR="/var/www/html/api"

echo -e "${GREEN}📦 [1/4] Verificando PHP...${NC}"
if ! command -v php &> /dev/null; then
    apt-get update -y
    apt-get install -y php-cli php-curl php-mbstring php-xml
fi
echo -e "${GREEN}   ✅ PHP OK${NC}"

echo -e "${GREEN}🎼 [2/4] Instalando Composer...${NC}"
if ! command -v composer &> /dev/null; then
    EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"
    if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
        echo -e "${RED}   ❌ Firma inválida${NC}"
        rm composer-setup.php
        exit 1
    fi
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    rm composer-setup.php
fi
echo -e "${GREEN}   ✅ Composer OK${NC}"

echo -e "${GREEN}📥 [3/4] Instalando PHPMailer...${NC}"
cd "$API_DIR"
if [ ! -f composer.json ]; then
    echo '{"require":{"phpmailer/phpmailer":"^6.8"}}' > composer.json
fi
composer install --no-dev --optimize-autoloader
chown -R www-data:www-data "$API_DIR"
echo -e "${GREEN}   ✅ PHPMailer OK${NC}"

echo -e "${GREEN}⚙️ [4/4] Creando smtp_config.php...${NC}"
cat > "$API_DIR/smtp_config.php" << 'INNER_EOF'
<?php
require_once __DIR__ . '/vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

define('SMTP_HOST',     'smtp-relay.brevo.com');
define('SMTP_PORT',     587);
define('SMTP_USER',     'befe1f001@smtp-brevo.com');
define('SMTP_PASSWORD', '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');
define('SMTP_FROM_EMAIL', 'petstopilerna@gmail.com');
define('SMTP_FROM_NAME',  'PetStop');

function crearMailer() {
    $mail = new PHPMailer(true);
    try {
        $mail->isSMTP();
        $mail->Host       = SMTP_HOST;
        $mail->SMTPAuth   = true;
        $mail->Username   = SMTP_USER;
        $mail->Password   = SMTP_PASSWORD;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
        $mail->Port       = SMTP_PORT;
        $mail->CharSet    = 'UTF-8';
        $mail->setFrom(SMTP_FROM_EMAIL, SMTP_FROM_NAME);
        $mail->addReplyTo(SMTP_FROM_EMAIL, SMTP_FROM_NAME);
        $mail->SMTPDebug = 0;
    } catch (Exception $e) {
        return null;
    }
    return $mail;
}

function enviarEmailSMTP($para, $asunto, $cuerpo, $nombreDestinatario = '') {
    $mail = crearMailer();
    if ($mail === null) return ['success' => false, 'error' => 'SMTP no configurado'];
    try {
        $mail->addAddress($para, $nombreDestinatario);
        $mail->isHTML(true);
        $mail->Subject = $asunto;
        $mail->Body    = $cuerpo;
        $mail->AltBody = strip_tags($cuerpo);
        $mail->send();
        return ['success' => true, 'error' => null];
    } catch (Exception $e) {
        return ['success' => false, 'error' => $mail->ErrorInfo];
    }
}
?>
INNER_EOF
chown www-data:www-data "$API_DIR/smtp_config.php"
chmod 640 "$API_DIR/smtp_config.php"
echo -e "${GREEN}   ✅ smtp_config.php OK${NC}"

echo ""
echo -e "${GREEN}============================================================${NC}"
echo -e "${GREEN}🎉 ¡INSTALACIÓN COMPLETA!${NC}"
echo -e "${GREEN}============================================================${NC}"
echo "Ahora ejecuta: php /var/www/html/api/test_smtp.php"
