<?php
/**
 * Save Landing Page Configuration
 * Processa o formulário de edição da landing page
 */
require_once __DIR__ . '/../../../includes/config.php';
require_once __DIR__ . '/../../../includes/landing-functions.php';

// Verificar autenticação
if (!isSuperAdmin()) {
    header('Location: /pages/login.php');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: index.php');
    exit;
}

$pdo = getDB();

try {
    // Processar Upload de Logo
    if (!empty($_FILES['header_logo_file']['name'])) {
        $file = $_FILES['header_logo_file'];
        $allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/svg+xml', 'image/webp'];
        $maxSize = 2 * 1024 * 1024; // 2MB
        
        if (!in_array($file['type'], $allowedTypes)) {
            throw new Exception('Tipo de arquivo não permitido. Use PNG, JPG, GIF, SVG ou WebP.');
        }
        
        if ($file['size'] > $maxSize) {
            throw new Exception('Arquivo muito grande. Tamanho máximo: 2MB.');
        }
        
        // Criar diretório de uploads se não existir
        $uploadDir = __DIR__ . '/../../../assets/uploads/landing/';
        if (!is_dir($uploadDir)) {
            mkdir($uploadDir, 0755, true);
        }
        
        // Gerar nome único para o arquivo
        $extension = pathinfo($file['name'], PATHINFO_EXTENSION);
        $filename = 'logo_' . time() . '_' . uniqid() . '.' . $extension;
        $filepath = $uploadDir . $filename;
        
        if (move_uploaded_file($file['tmp_name'], $filepath)) {
            $logoUrl = '/assets/uploads/landing/' . $filename;
            saveLandingConfig($pdo, 'header_logo', $logoUrl);
        } else {
            throw new Exception('Erro ao fazer upload do arquivo.');
        }
    } elseif (isset($_POST['header_logo'])) {
        // Manter o logo existente
        saveLandingConfig($pdo, 'header_logo', $_POST['header_logo']);
    }
    
    // Processar tipo de logo
    if (isset($_POST['header_logo_type'])) {
        saveLandingConfig($pdo, 'header_logo_type', $_POST['header_logo_type']);
    }

    // Processar Upload de Logo Dark (para modo escuro)
    if (!empty($_FILES['header_logo_dark_file']['name'])) {
        $file = $_FILES['header_logo_dark_file'];
        $allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/svg+xml', 'image/webp'];
        $maxSize = 2 * 1024 * 1024; // 2MB

        if (!in_array($file['type'], $allowedTypes)) {
            throw new Exception('Tipo de arquivo não permitido para Logo Dark. Use PNG, JPG, GIF, SVG ou WebP.');
        }

        if ($file['size'] > $maxSize) {
            throw new Exception('Logo Dark muito grande. Tamanho máximo: 2MB.');
        }

        // Criar diretório de uploads se não existir
        $uploadDir = __DIR__ . '/../../../assets/uploads/landing/';
        if (!is_dir($uploadDir)) {
            mkdir($uploadDir, 0755, true);
        }

        // Gerar nome único para o arquivo
        $extension = pathinfo($file['name'], PATHINFO_EXTENSION);
        $filename = 'logo_dark_' . time() . '_' . uniqid() . '.' . $extension;
        $filepath = $uploadDir . $filename;

        if (move_uploaded_file($file['tmp_name'], $filepath)) {
            $logoDarkUrl = '/assets/uploads/landing/' . $filename;
            saveLandingConfig($pdo, 'header_logo_dark', $logoDarkUrl);
        } else {
            throw new Exception('Erro ao fazer upload do Logo Dark.');
        }
    } elseif (isset($_POST['header_logo_dark'])) {
        // Manter o logo dark existente
        saveLandingConfig($pdo, 'header_logo_dark', $_POST['header_logo_dark']);
    }

    // Processar Upload de Imagem do Hero
    if (!empty($_FILES['hero_image_file']['name'])) {
        $file = $_FILES['hero_image_file'];
        $allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/webp'];
        $maxSize = 5 * 1024 * 1024; // 5MB

        if (!in_array($file['type'], $allowedTypes)) {
            throw new Exception('Tipo de arquivo não permitido para imagem do Hero. Use PNG, JPG, GIF ou WebP.');
        }

        if ($file['size'] > $maxSize) {
            throw new Exception('Imagem do Hero muito grande. Tamanho máximo: 5MB.');
        }

        // Criar diretório de uploads se não existir
        $uploadDir = __DIR__ . '/../../../assets/uploads/landing/';
        if (!is_dir($uploadDir)) {
            mkdir($uploadDir, 0755, true);
        }

        // Gerar nome único para o arquivo
        $extension = pathinfo($file['name'], PATHINFO_EXTENSION);
        $filename = 'hero_' . time() . '_' . uniqid() . '.' . $extension;
        $filepath = $uploadDir . $filename;

        if (move_uploaded_file($file['tmp_name'], $filepath)) {
            $heroImageUrl = '/assets/uploads/landing/' . $filename;
            saveLandingConfig($pdo, 'hero_image', $heroImageUrl);
        } else {
            throw new Exception('Erro ao fazer upload da imagem do Hero.');
        }
    } elseif (isset($_POST['hero_image'])) {
        // Se hero_image veio vazio, salvar como vazio (para remover)
        saveLandingConfig($pdo, 'hero_image', $_POST['hero_image']);
    }

    // Processar Menu de Navegação
    $menuItems = [];
    if (isset($_POST['menu_label']) && is_array($_POST['menu_label'])) {
        foreach ($_POST['menu_label'] as $i => $label) {
            if (!empty($label)) {
                $menuItems[] = [
                    'label' => $label,
                    'url' => $_POST['menu_url'][$i] ?? '#',
                    'icon' => $_POST['menu_icon'][$i] ?? 'solar:link-bold',
                    'active' => isset($_POST['menu_active'][$i]) ? 1 : 0
                ];
            }
        }
    }
    saveLandingConfig($pdo, 'header_menu', json_encode($menuItems));

    // Processar campos simples
    $simpleFields = [
        'header_logo_text',
        'seo_description',
        'hero_badge',
        'hero_title',
        'hero_subtitle',
        'hero_btn_primary_text',
        'hero_btn_secondary_text',
        'features_title',
        'features_subtitle',
        'pricing_title',
        'pricing_subtitle',
        'testimonials_title',
        'testimonials_subtitle',
        'cta_title',
        'cta_subtitle',
        'cta_btn_text',
        'header_btn_login_text',
        'header_btn_login_link',
        'header_btn_cta_text',
        'header_btn_cta_link'
    ];

    foreach ($simpleFields as $field) {
        if (isset($_POST[$field])) {
            saveLandingConfig($pdo, $field, $_POST[$field]);
        }
    }

    // Processar toggles (show/hide sections)
    $toggles = ['show_hero', 'show_features', 'show_pricing', 'show_testimonials', 'show_cta'];
    foreach ($toggles as $toggle) {
        $value = isset($_POST[$toggle]) ? '1' : '0';
        saveLandingConfig($pdo, $toggle, $value);
    }

    // Processar Features Items
    $featuresItems = [];
    if (isset($_POST['feature_title']) && is_array($_POST['feature_title'])) {
        foreach ($_POST['feature_title'] as $i => $title) {
            if (!empty($title)) {
                $featuresItems[] = [
                    'icon' => $_POST['feature_icon'][$i] ?? 'solar:star-bold',
                    'title' => $title,
                    'description' => $_POST['feature_description'][$i] ?? ''
                ];
            }
        }
    }
    saveLandingConfig($pdo, 'features_items', json_encode($featuresItems));

    // Processar Cores
    $colors = [
        'primary' => $_POST['style_primary_color'] ?? '#CCA43B',
        'secondary' => $_POST['style_secondary_color'] ?? '#1A1A1A',
        'accent' => $_POST['style_accent_color'] ?? '#FFD700'
    ];
    saveLandingConfig($pdo, 'colors', json_encode($colors));

    $_SESSION['landing_message'] = 'Configurações salvas com sucesso!';
    $_SESSION['landing_message_type'] = 'success';

} catch (Exception $e) {
    $_SESSION['landing_message'] = 'Erro ao salvar: ' . $e->getMessage();
    $_SESSION['landing_message_type'] = 'error';
}

header('Location: index.php');
exit;
