<?php
require_once 'conexao.php';
session_start();

// Verificar se o usuário está logado
if (!isset($_SESSION['logado'])) {
    echo json_encode(['success' => false, 'message' => 'Não autorizado']);
    exit;
}

// Verificar CSRF token
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    echo json_encode(['success' => false, 'message' => 'Token CSRF inválido']);
    exit;
}

// Verificar se o ID da atividade foi enviado
if (!isset($_POST['id']) || empty($_POST['id'])) {
    echo json_encode(['success' => false, 'message' => 'ID da atividade não informado']);
    exit;
}

$atividade_id = $_POST['id'];
$usuario_id = $_SESSION['usuario_id'];
$tenant_id = $_SESSION['tenant_id'];
$nome_usuario = $_SESSION['nome_usuario'] ?? 'Usuário';
$enviar_email = isset($_POST['enviar_email']) ? (int)$_POST['enviar_email'] : 0;

// FUNÇÃO DE ENVIO DE E-MAIL COM SENDGRID (MESMA DO editar_atividade.php)
function enviarEmailConclusao($destinatario, $assunto, $mensagem, $tenant_id) {
    try {
        // ✅ CONFIGURAÇÃO SENDGRID - MESMA DO editar_atividade.php
        $sendgrid_api_key = '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';
        
        // Verificar se a API Key está no formato correto
        if (empty($sendgrid_api_key) || strlen($sendgrid_api_key) < 20) {
            error_log("❌ API Key do SendGrid não configurada ou inválida");
            return false;
        }
        
        // ✅ E-MAIL VERIFICADO NO SENDGRID - MESMO DO editar_atividade.php
        $emailRemetenteVerificado = 'sistema@notificacaoson.tvitecnologia.com.br';
        $nomeRemetenteVerificado = 'Sistema SON';
        
        // Configurações de nome por tenant
        $configs = [
            1 => [ // Tenant 1
                'from_name' => 'Sistema Empresa 1'
            ],
            2 => [ // Tenant 2  
                'from_name' => 'Sistema Empresa 2'
            ]
        ];
        
        $config = $configs[$tenant_id] ?? [
            'from_name' => 'SON Sistema'
        ];
        
        $nomeRemetenteVerificado = $config['from_name'];
        
        // Validar e-mail do destinatário
        if (!filter_var($destinatario, FILTER_VALIDATE_EMAIL)) {
            error_log("❌ E-mail do destinatário inválido: $destinatario");
            return false;
        }
        
        $url = 'https://api.sendgrid.com/v3/mail/send';
        
        // ✅ Estrutura CORRIGIDA - Mais simples e funcional
        $data = [
            'personalizations' => [
                [
                    'to' => [
                        [
                            'email' => $destinatario,
                            'name' => 'Usuário'
                        ]
                    ],
                    'subject' => $assunto
                ]
            ],
            'from' => [
                'email' => $emailRemetenteVerificado,
                'name' => $nomeRemetenteVerificado
            ],
            'content' => [
                [
                    'type' => 'text/html',
                    'value' => $mensagem
                ]
            ]
        ];
        
        // Log detalhado para debug
        error_log("📤 CONCLUIR_ATIVIDADE.PHP - Enviando email via SendGrid:");
        error_log("📤 De: $nomeRemetenteVerificado <$emailRemetenteVerificado>");
        error_log("📤 Para: $destinatario");
        error_log("📤 Assunto: $assunto");
        error_log("📤 Tenant ID: $tenant_id");
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Authorization: Bearer ' . $sendgrid_api_key,
            'Content-Type: ' . 'application/json',
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        
        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $curl_error = curl_error($ch);
        $curl_errno = curl_errno($ch);
        
        // Log da resposta completa para debug
        error_log("📤 SendGrid Response - HTTP Code: $http_code");
        if ($response) {
            error_log("📤 SendGrid Response - Body: " . substr($response, 0, 500));
        }
        
        curl_close($ch);
        
        if ($curl_errno) {
            error_log("❌ CONCLUIR_ATIVIDADE.PHP - Erro cURL para $destinatario: $curl_error (Code: $curl_errno)");
            return false;
        }
        
        if ($http_code === 202) {
            error_log("✅ CONCLUIR_ATIVIDADE.PHP - SendGrid: Email ACEITO para entrega - HTTP: $http_code");
            error_log("✅ CONCLUIR_ATIVIDADE.PHP - Destinatário: $destinatario");
            return true;
        } else {
            $erro_msg = "CONCLUIR_ATIVIDADE.PHP - Falha no envio para $destinatario - HTTP: $http_code";
            if ($response) {
                $response_data = json_decode($response, true);
                if (isset($response_data['errors'])) {
                    foreach ($response_data['errors'] as $error) {
                        $erro_msg .= " - Erro: " . $error['message'];
                    }
                } else {
                    $erro_msg .= " - Response: " . $response;
                }
            }
            error_log("❌ $erro_msg");
            return false;
        }
        
    } catch (Exception $e) {
        error_log("❌ CONCLUIR_ATIVIDADE.PHP - Exceção no SendGrid: " . $e->getMessage());
        return false;
    }
}

// FUNÇÃO PARA CRIAR TEMPLATE DE E-MAIL DE CONCLUSÃO
function criarTemplateConclusao($atividade, $usuario_nome) {
    $dataHora = date('d/m/Y H:i', strtotime($atividade['data_agendada']));
    $dataConclusao = date('d/m/Y H:i');
    
    // Calcular data de término se houver duração
    $dataTermino = '';
    if (!empty($atividade['duracao_minutos']) && $atividade['duracao_minutos'] > 0) {
        $dataTerminoObj = new DateTime($atividade['data_agendada']);
        $dataTerminoObj->add(new DateInterval('PT' . $atividade['duracao_minutos'] . 'M'));
        $dataTermino = $dataTerminoObj->format('d/m/Y H:i');
    }
    
    return "
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; margin: 20px; }
                .container { max-width: 600px; margin: 0 auto; border: 1px solid #ddd; border-radius: 8px; padding: 20px; }
                .header { background: #d4edda; padding: 15px; border-radius: 5px; margin-bottom: 20px; }
                .info { margin: 10px 0; }
                .btn { display: inline-block; padding: 10px 20px; background: #007bff; color: white; text-decoration: none; border-radius: 4px; }
            </style>
        </head>
        <body>
            <div class='container'>
                <div class='header'>
                    <h2>✅ Atividade Concluída</h2>
                </div>
                <div class='info'><strong>📋 Atividade:</strong> {$atividade['nome']}</div>
                <div class='info'><strong>📅 Início Original:</strong> $dataHora</div>
                " . ($dataTermino ? "<div class='info'><strong>⏰ Término Original:</strong> $dataTermino</div>" : "") .
                ($atividade['duracao_minutos'] ? "<div class='info'><strong>⏱️ Duração:</strong> " . formatarDuracao($atividade['duracao_minutos']) . "</div>" : "") . "
                <div class='info'><strong>🕒 Concluída em:</strong> $dataConclusao</div>
                " . ($atividade['Nome_Cliente'] ? "<div class='info'><strong>👤 Cliente:</strong> {$atividade['Nome_Cliente']}</div>" : "") . "
                <div class='info'><strong>👨‍💼 Concluída por:</strong> $usuario_nome</div>
                " . ($atividade['descricao'] ? "<div class='info'><strong>📝 Descrição:</strong> {$atividade['descricao']}</div>" : "") . "
                <br>
                <a href='https://seusite.com/calendario.php' class='btn'>📅 Acessar Calendário</a>
            </div>
        </body>
        </html>
    ";
}

// FUNÇÃO AUXILIAR PARA FORMATAR DURAÇÃO
function formatarDuracao($minutos) {
    if ($minutos < 60) {
        return $minutos . ' minutos';
    } else {
        $horas = floor($minutos / 60);
        $minutos_restantes = $minutos % 60;
        if ($minutos_restantes == 0) {
            return $horas . ' hora' . ($horas > 1 ? 's' : '');
        } else {
            return $horas . 'h' . $minutos_restantes . 'min';
        }
    }
}

// Verificar se a atividade pertence ao usuário ou se está compartilhada
$sql_verificar = "
    SELECT a.*, ca.usuario_compartilhado_id, u.email as usuario_email, c.Nome_Cliente, c.Email as cliente_email
    FROM atividades a
    LEFT JOIN compartilhamento_agenda ca ON (a.usuario_id = ca.usuario_proprietario_id AND ca.usuario_compartilhado_id = ? AND ca.ativo = 1)
    LEFT JOIN usuarios u ON a.usuario_id = u.id
    LEFT JOIN clientes c ON a.cliente_id = c.id
    WHERE a.id = ? AND (a.usuario_id = ? OR ca.usuario_compartilhado_id = ?) AND a.ativo = 1
";

$stmt_verificar = $conn->prepare($sql_verificar);
$stmt_verificar->bind_param("iiii", $usuario_id, $atividade_id, $usuario_id, $usuario_id);
$stmt_verificar->execute();
$result_verificar = $stmt_verificar->get_result();

if ($result_verificar->num_rows === 0) {
    echo json_encode(['success' => false, 'message' => 'Atividade não encontrada ou sem permissão']);
    exit;
}

$atividade = $result_verificar->fetch_assoc();
$stmt_verificar->close();

// Atualizar a atividade como concluída
$sql = "UPDATE atividades SET concluida = 1, data_conclusao = NOW(), atualizado_em = NOW() WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $atividade_id);

if ($stmt->execute()) {
    $resultado_email = false;
    $mensagem_email = '';
    
    // ENVIAR E-MAIL SE SOLICITADO
    if ($enviar_email == 1) {
        // Determinar destinatários
        $destinatarios = [];
        
        // 1. Usuário responsável pela atividade
        if (!empty($atividade['usuario_email']) && filter_var($atividade['usuario_email'], FILTER_VALIDATE_EMAIL)) {
            $destinatarios[] = [
                'email' => $atividade['usuario_email'],
                'nome' => 'Responsável pela Atividade'
            ];
        }
        
        // 2. Cliente associado (se houver e-mail válido)
        if (!empty($atividade['cliente_email']) && filter_var($atividade['cliente_email'], FILTER_VALIDATE_EMAIL) && $atividade['cliente_id']) {
            $destinatarios[] = [
                'email' => $atividade['cliente_email'],
                'nome' => $atividade['Nome_Cliente'] ?? 'Cliente'
            ];
        }
        
        // 3. Usuário atual que está concluindo (se for diferente do responsável)
        if (!empty($atividade['usuario_email']) && $atividade['usuario_email'] != $atividade['usuario_email']) {
            $sql_usuario_atual = "SELECT email FROM usuarios WHERE id = ?";
            $stmt_usuario_atual = $conn->prepare($sql_usuario_atual);
            $stmt_usuario_atual->bind_param("i", $usuario_id);
            $stmt_usuario_atual->execute();
            $result_usuario_atual = $stmt_usuario_atual->get_result();
            if ($result_usuario_atual->num_rows > 0) {
                $usuario_atual = $result_usuario_atual->fetch_assoc();
                if (!empty($usuario_atual['email']) && filter_var($usuario_atual['email'], FILTER_VALIDATE_EMAIL)) {
                    $destinatarios[] = [
                        'email' => $usuario_atual['email'],
                        'nome' => 'Você'
                    ];
                }
            }
            $stmt_usuario_atual->close();
        }
        
        if (!empty($destinatarios)) {
            $assunto = "✅ Atividade Concluída: " . $atividade['nome'];
            $mensagem = criarTemplateConclusao($atividade, $nome_usuario);
            
            foreach ($destinatarios as $dest) {
                $enviado = enviarEmailConclusao($dest['email'], $assunto, $mensagem, $tenant_id);
                
                if ($enviado) {
                    $resultado_email = true;
                    $mensagem_email .= "E-mail enviado para " . $dest['email'] . ". ";
                    error_log("✅ CONCLUIR_ATIVIDADE.PHP - E-mail de conclusão enviado para: " . $dest['email']);
                } else {
                    $mensagem_email .= "Falha ao enviar e-mail para " . $dest['email'] . ". ";
                    error_log("❌ CONCLUIR_ATIVIDADE.PHP - Falha ao enviar e-mail para: " . $dest['email']);
                }
            }
        } else {
            $mensagem_email = "Nenhum destinatário de e-mail válido encontrado.";
            error_log("⚠️ CONCLUIR_ATIVIDADE.PHP - Nenhum e-mail válido para envio");
        }
    }
    
    // Registrar log de conclusão de atividade
    $acao = 'concluir_atividade';
    $detalhes = "Atividade concluída: " . $atividade['nome'] . " (ID: " . $atividade_id . ")" . 
                ($enviar_email && $resultado_email ? " - E-mail de conclusão enviado" : "");
    
    $sql_log = "INSERT INTO cliente_logs (cliente_id, usuario_id, nome_usuario, acao, detalhes, tenant_id, atividade_id, observacao_id) 
                VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
    $stmt_log = $conn->prepare($sql_log);
    $cliente_id_log = $atividade['cliente_id'] ?? 0;
    $observacao_id_log = 0;
    $stmt_log->bind_param("iisssiii", $cliente_id_log, $usuario_id, $nome_usuario, $acao, $detalhes, $tenant_id, $atividade_id, $observacao_id_log);
    $stmt_log->execute();
    $stmt_log->close();
    
    // Se a atividade está associada a um cliente, criar entrada na timeline
    if ($atividade['cliente_id'] && is_numeric($atividade['cliente_id'])) {
        $detalhes_timeline = "Atividade concluída: " . $atividade['nome'];
        if (!empty($atividade['descricao'])) {
            $detalhes_timeline .= " - " . $atividade['descricao'];
        }
        if ($enviar_email && $resultado_email) {
            $detalhes_timeline .= " (E-mail de notificação enviado)";
        }
        
        $sql_timeline = "INSERT INTO timeline (cliente_id, usuario_id, data_movimentacao, tenant_id, detalhes) 
                         VALUES (?, ?, NOW(), ?, ?)";
        
        $stmt_timeline = $conn->prepare($sql_timeline);
        $stmt_timeline->bind_param("iiis", $atividade['cliente_id'], $usuario_id, $tenant_id, $detalhes_timeline);
        $stmt_timeline->execute();
        $stmt_timeline->close();
    }
    
    $mensagem_retorno = 'Atividade concluída com sucesso';
    if ($enviar_email) {
        $mensagem_retorno .= '. ' . $mensagem_email;
    }
    
    echo json_encode([
        'success' => true, 
        'message' => $mensagem_retorno,
        'email_enviado' => $enviar_email ? $resultado_email : false
    ]);
} else {
    echo json_encode(['success' => false, 'message' => 'Erro ao concluir atividade: ' . $conn->error]);
}

$stmt->close();
$conn->close();
?>