<?php
/**
 * Processa o formulário de contato
 * 
 * @param array $data Dados do formulário
 * @return array Resultado do processamento
 */

require_once 'config.php';

function processContactForm($data) {
    // Validar campos obrigatórios
    $required_fields = ['nome', 'cnpj', 'telefone', 'email', 'cidade', 'segmento', 'volume'];
    $errors = [];
    
    foreach ($required_fields as $field) {
        if (empty($data[$field])) {
            $field_name = $field === 'cnpj' ? 'CNPJ' : ($field === 'email' ? 'E-mail' : ucfirst($field));
            $errors[] = "O campo " . $field_name . " é obrigatório.";
        }
    }
    
    // Validar email
    if (!empty($data['email'])) {
        if (!filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
            $errors[] = "E-mail inválido.";
        }
    }
    
    // Validar telefone
    if (!empty($data['telefone'])) {
        $telefone = preg_replace('/\D/', '', $data['telefone']);
        if (strlen($telefone) < 10 || strlen($telefone) > 11) {
            $errors[] = "Telefone inválido.";
        }
    }
    
    // Validar CNPJ
    if (!empty($data['cnpj'])) {
        $cnpj = preg_replace('/\D/', '', $data['cnpj']);
        if (strlen($cnpj) !== 14) {
            $errors[] = "CNPJ inválido. Deve conter 14 dígitos.";
        }
    }
    
    // Se houver erros, retornar
    if (!empty($errors)) {
        return [
            'success' => false,
            'message' => implode(' ', $errors)
        ];
    }
    
    // Preparar dados para salvar/enviar
    $form_data = [
        'nome' => sanitizeInput($data['nome']),
        'cnpj' => sanitizeInput($data['cnpj']),
        'telefone' => sanitizeInput($data['telefone']),
        'email' => sanitizeInput($data['email']),
        'cidade' => sanitizeInput($data['cidade']),
        'segmento' => sanitizeInput($data['segmento']),
        'volume' => sanitizeInput($data['volume']),
        'data' => date('Y-m-d H:i:s'),
        'ip' => $_SERVER['REMOTE_ADDR'] ?? 'N/A'
    ];
    
    // Salvar em arquivo (você pode mudar para banco de dados)
    $result = saveContactData($form_data);
    
    if ($result) {
        // Enviar para Google Sheets (se habilitado)
        require_once 'google_sheets.php';
        $sheets_sent = sendToGoogleSheets($form_data);
        
        if (!$sheets_sent) {
            error_log("Aviso: Dados não puderam ser enviados para Google Sheets, mas foram salvos localmente. Contato: " . $form_data['nome']);
        }
        
        // Enviar para Make (se habilitado)
        require_once 'make_integration.php';
        $make_sent = sendToMake($form_data);
        
        if (!$make_sent) {
            error_log("Aviso: Dados não puderam ser enviados para Make, mas foram salvos localmente. Contato: " . $form_data['nome']);
        }
        
        // Enviar para WhatsApp (se habilitado)
        require_once 'whatsapp_integration.php';
        $whatsapp_link = sendToWhatsApp($form_data);
        
        if ($whatsapp_link) {
            // Enviar link do WhatsApp por email para facilitar o acesso
            sendWhatsAppLinkByEmail($whatsapp_link, $form_data);
            error_log("WhatsApp: Link gerado e enviado por email. Contato: " . $form_data['nome']);
        }
        
        // Enviar email de notificação
        $email_sent = sendNotificationEmail($form_data);
        
        // Log se o email não foi enviado (mas não falha o processo)
        if (!$email_sent) {
            error_log("Aviso: Email não pôde ser enviado, mas os dados foram salvos. Contato: " . $form_data['nome']);
        }
        
        return [
            'success' => true,
            'message' => 'Formulário enviado com sucesso! Nossa equipe entrará em contato em breve.'
        ];
    } else {
        return [
            'success' => false,
            'message' => 'Erro ao processar formulário. Tente novamente.'
        ];
    }
}

/**
 * Sanitiza entrada do usuário
 */
function sanitizeInput($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
    return $data;
}

/**
 * Salva dados do contato em arquivo CSV
 */
function saveContactData($data) {
    $file = CONTACTS_FILE;
    $header = !file_exists($file);
    
    $fp = fopen($file, 'a');
    
    if ($header) {
        fputcsv($fp, ['Data', 'Nome', 'CNPJ', 'Telefone', 'E-mail', 'Cidade', 'Segmento', 'Volume', 'IP']);
    }
    
    $result = fputcsv($fp, [
        $data['data'],
        $data['nome'],
        $data['cnpj'],
        $data['telefone'],
        $data['email'],
        $data['cidade'],
        $data['segmento'],
        $data['volume'],
        $data['ip']
    ]);
    
    fclose($fp);
    
    return $result !== false;
}

/**
 * Envia email de notificação
 */
function sendNotificationEmail($data) {
    $to = EMAIL_TO;
    $subject = EMAIL_SUBJECT;
    
    // Gerar link do WhatsApp se estiver habilitado
    $whatsapp_link = '';
    if (defined('WHATSAPP_ENABLED') && WHATSAPP_ENABLED && defined('WHATSAPP_NUMBER') && !empty(WHATSAPP_NUMBER)) {
        require_once 'whatsapp_integration.php';
        $phone = preg_replace('/\D/', '', WHATSAPP_NUMBER);
        $message = formatWhatsAppMessage($data);
        $whatsapp_link = "https://wa.me/{$phone}?text=" . urlencode($message);
    }
    
    // Criar mensagem em HTML
    $message = "<!DOCTYPE html>
<html lang='pt-BR'>
<head>
    <meta charset='UTF-8'>
    <style>
        body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }
        .container { max-width: 600px; margin: 0 auto; padding: 20px; }
        .header { background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%); color: white; padding: 20px; text-align: center; border-radius: 8px 8px 0 0; }
        .content { background: #f9fafb; padding: 30px; border-radius: 0 0 8px 8px; }
        .info-box { background: white; padding: 15px; margin: 10px 0; border-left: 4px solid #2563eb; border-radius: 4px; }
        .label { font-weight: bold; color: #1e40af; display: inline-block; min-width: 120px; }
        .footer { text-align: center; margin-top: 20px; padding-top: 20px; border-top: 1px solid #e5e7eb; color: #6b7280; font-size: 12px; }
    </style>
</head>
<body>
    <div class='container'>
        <div class='header'>
            <h2>Nova Solicitação de Orçamento</h2>
            <p style='margin: 0; font-size: 14px;'>GK2100 GIMAK</p>
        </div>
        <div class='content'>
            <p>Você recebeu uma nova solicitação de orçamento através do site:</p>
            
            <div class='info-box'>
                <p><span class='label'>Nome:</span> " . htmlspecialchars($data['nome']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>CNPJ:</span> " . htmlspecialchars($data['cnpj']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>Telefone:</span> " . htmlspecialchars($data['telefone']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>E-mail:</span> " . htmlspecialchars($data['email'] ?? 'Não informado') . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>Cidade:</span> " . htmlspecialchars($data['cidade']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>Segmento:</span> " . htmlspecialchars($data['segmento']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>Volume:</span> " . htmlspecialchars($data['volume']) . " pallets/dia</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>Data/Hora:</span> " . htmlspecialchars($data['data']) . "</p>
            </div>
            
            <div class='info-box'>
                <p><span class='label'>IP:</span> " . htmlspecialchars($data['ip']) . "</p>
            </div>";
    
    // Adicionar botão do WhatsApp se disponível
    if (!empty($whatsapp_link)) {
        $message .= "
            <div style='text-align: center; margin: 30px 0;'>
                <a href='" . htmlspecialchars($whatsapp_link) . "' 
                   style='background: #25D366; 
                          color: white; 
                          padding: 16px 32px; 
                          text-decoration: none; 
                          border-radius: 8px; 
                          display: inline-block; 
                          font-weight: 600;
                          font-size: 16px;'>
                    💬 Abrir WhatsApp para Contato
                </a>
            </div>";
    }
    
    $message .= "
            <div class='footer'>
                <p>Este e-mail foi enviado automaticamente pelo sistema do site GIMAK.</p>
                <p>Por favor, entre em contato com o cliente o mais breve possível.</p>
            </div>
        </div>
    </div>
</body>
</html>";
    
    // Versão texto simples para clientes que não suportam HTML
    $message_text = "Nova solicitação de orçamento recebida:\n\n";
    $message_text .= "Nome: " . $data['nome'] . "\n";
    $message_text .= "CNPJ: " . $data['cnpj'] . "\n";
    $message_text .= "Telefone: " . $data['telefone'] . "\n";
    $message_text .= "E-mail: " . ($data['email'] ?? 'Não informado') . "\n";
    $message_text .= "Cidade: " . $data['cidade'] . "\n";
    $message_text .= "Segmento: " . $data['segmento'] . "\n";
    $message_text .= "Volume: " . $data['volume'] . " pallets/dia\n";
    $message_text .= "Data: " . $data['data'] . "\n";
    $message_text .= "IP: " . $data['ip'] . "\n";
    
    // Criar arquivo de log para debug
    $log_file = 'email_log.txt';
    $log_entry = date('Y-m-d H:i:s') . " - Tentando enviar email para: $to\n";
    $log_entry .= "Assunto: $subject\n";
    $log_entry .= "De: " . (defined('EMAIL_FROM_NAME') ? EMAIL_FROM_NAME : 'GIMAK') . " <" . EMAIL_FROM . ">\n";
    $log_entry .= "---\n";
    
    // Headers do email melhorados
    $from_name = defined('EMAIL_FROM_NAME') ? EMAIL_FROM_NAME : 'GIMAK';
    $from_email = EMAIL_FROM;
    
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $headers .= "From: " . $from_name . " <" . $from_email . ">\r\n";
    $headers .= "Reply-To: " . $from_email . "\r\n";
    $headers .= "Return-Path: " . $from_email . "\r\n";
    $headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
    $headers .= "X-Priority: 1\r\n";
    $headers .= "Importance: High\r\n";
    
    // Tentar enviar o email usando SMTP ou mail()
    require_once 'smtp_email.php';
    
    $mail_sent = sendEmailSMTP($to, $subject, $message, $message_text);
    $error_msg = '';
    
    if ($mail_sent) {
        $log_entry .= "SUCESSO: Email enviado com sucesso!\n";
    } else {
        // Tentar método alternativo (mail padrão)
        if (function_exists('mail')) {
            $mail_sent = @mail($to, $subject, $message, $headers, "-f" . $from_email);
            if (!$mail_sent) {
                $error = error_get_last();
                $error_msg = isset($error['message']) ? $error['message'] : 'Erro desconhecido';
                $log_entry .= "ERRO: Falha ao enviar email. Erro: $error_msg\n";
            } else {
                $log_entry .= "SUCESSO: Email enviado via mail() padrão!\n";
            }
        } else {
            $error_msg = "Função mail() não está disponível no servidor";
            $log_entry .= "ERRO: $error_msg\n";
        }
    }
    
    // Salvar log
    @file_put_contents($log_file, $log_entry, FILE_APPEND);
    
    // Se falhou, tentar método alternativo (salvar em arquivo para debug)
    if (!$mail_sent) {
        // Salvar email em arquivo como backup
        $backup_file = 'emails_backup/' . date('Y-m-d_H-i-s') . '_' . preg_replace('/[^a-zA-Z0-9]/', '_', $data['nome']) . '.html';
        if (!is_dir('emails_backup')) {
            @mkdir('emails_backup', 0755, true);
        }
        @file_put_contents($backup_file, $message);
        
        // Log adicional
        error_log("ERRO CRÍTICO: Email não pôde ser enviado para $to. Erro: $error_msg. Email salvo em: $backup_file");
    }
    
    return $mail_sent;
}

