// 1. IMPORTAÇÕES
require('dotenv').config(); // Carrega as variáveis do arquivo .env
const express = require('express');
const cors = require('cors');
const axios = require('axios'); // Importa o axios

// 2. INICIALIZAÇÃO DO APP
const app = express();
const PORT = 3001;

// 3. MIDDLEWARE
app.use(cors());
app.use(express.json());

// 4. DADOS MOCK -  Adicionamos o patientPhone
let conversationsData = [
    {
        id: 1,
        patientName: 'Ana Costa',
        // Coloque seu número de WhatsApp verificado aqui!
        // Formato: 55 + DDD + NUMERO (tudo junto)
        patientPhone: '5575988104585',
        avatarUrl: 'https://placehold.co/100x100/E2D9FF/6B46C1?text=AC',
        lastMessage: 'Ok, doutor. Muito obrigada!',
        timestamp: '10:45',
        unread: 2,
        messages: [
            { id: 1, sender: 'Ana Costa', text: 'Boa tarde, doutor.', time: '09:15' },
        ],
    },
    {
        id: 2,
        patientName: 'Carlos Andrade',
        patientPhone: '5511888888888', // Número de exemplo
        avatarUrl: 'https://placehold.co/100x100/D1E7DD/146C43?text=CA',
        lastMessage: 'Amanhã, às 14h, está ótimo.',
        timestamp: 'Ontem',
        unread: 0,
        messages: [
           { id: 1, sender: 'Carlos Andrade', text: 'Doutor, preciso remarcar.', time: 'Ontem' },
        ],
    },
];

//  5. FUNÇÃO PARA ENVIAR MENSAGEM VIA WHATSAPP
async function sendWhatsAppMessage(phoneNumber, messageText) {
    const WHATSAPP_TOKEN = process.env.WHATSAPP_TOKEN;
    const WHATSAPP_PHONE_NUMBER_ID = process.env.WHATSAPP_PHONE_NUMBER_ID;

    // URL da API do WhatsApp
    const url = `https://graph.facebook.com/v19.0/${WHATSAPP_PHONE_NUMBER_ID}/messages`;

    // Corpo da requisição
    const data = {
        messaging_product: 'whatsapp',
        to: phoneNumber,
        type: 'text',
        text: {
            body: messageText
        }
    };

    // Cabeçalhos com a autorização
    const headers = {
        'Authorization': `Bearer ${WHATSAPP_TOKEN}`,
        'Content-Type': 'application/json'
    };

    try {
        console.log(`Enviando mensagem para ${phoneNumber}...`);
        await axios.post(url, data, { headers: headers });
        console.log('✅ Mensagem enviada com sucesso para a API do WhatsApp!');
    } catch (error) {
        console.error('❌ Erro ao enviar mensagem para o WhatsApp:');
        // A resposta de erro da Meta geralmente está em error.response.data
        if (error.response) {
            console.error(JSON.stringify(error.response.data, null, 2));
        } else {
            console.error(error.message);
        }
    }
}


// 6. ROTAS DA API

app.get('/api/conversations', (req, res) => {
    const conversationList = conversationsData.map(({ messages, ...convo }) => convo);
    res.json(conversationList);
});

app.get('/api/conversations/:id', (req, res) => {
    const conversationId = parseInt(req.params.id);
    const conversation = conversationsData.find(c => c.id === conversationId);
    if (conversation) {
        res.json(conversation);
    } else {
        res.status(404).json({ message: 'Conversa não encontrada' });
    }
});

//  7. ROTA DE ENVIO DE MENSAGEM ATUALIZADA
app.post('/api/conversations/:id/messages', async (req, res) => { // A rota agora é async
    const conversationId = parseInt(req.params.id);
    const { text } = req.body;
    
    const conversation = conversationsData.find(c => c.id === conversationId);

    if (!conversation) {
        return res.status(404).json({ message: 'Conversa não encontrada.' });
    }
    if (!text) {
        return res.status(400).json({ message: 'O texto da mensagem é obrigatório.' });
    }
    
    // Envia para o WhatsApp primeiro
    await sendWhatsAppMessage(conversation.patientPhone, text);

    // Depois, salva localmente (como antes)
    const newMessage = {
        id: Date.now(),
        sender: 'Você',
        text: text,
        time: new Date().toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }),
    };

    conversationsData = conversationsData.map(convo => {
        if (convo.id === conversationId) {
            return {
                ...convo,
                messages: [...convo.messages, newMessage],
                lastMessage: text,
                timestamp: 'Agora'
            };
        }
        return convo;
    });

    res.status(201).json(newMessage);
});


// 8. INICIANDO O SERVIDOR
app.listen(PORT, () => {
    console.log(`🚀 Servidor backend rodando na porta ${PORT}`);
});
