const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const PORT = 3000;

// Middleware para parsear JSON e servir arquivos estáticos (se houver)
app.use(bodyParser.json());
app.use(express.static('public'));

// Simulação de "banco" em memória
let tarefas = [];
let proximoId = 1;

// ----- Rotas -----

// GET / - Página inicial simples
app.get('/', (req, res) => {
  res.send(`
    <h1>Lista de Tarefas</h1>
    <ul id="lista"></ul>

    <form id="form">
      <input type="text" name="titulo" placeholder="Nova tarefa" required />
      <button type="submit">Adicionar</button>
    </form>

    <script>
      async function carregar() {
        const resp = await fetch('/tarefas');
        const dados = await resp.json();
        const lista = document.getElementById('lista');
        lista.innerHTML = '';
        dados.forEach(t => {
          const li = document.createElement('li');
          li.textContent = t.titulo + ' ';
          const btn = document.createElement('button');
          btn.textContent = 'X';
          btn.onclick = async () => {
            await fetch('/tarefas/' + t.id, { method: 'DELETE' });
            carregar();
          };
          li.appendChild(btn);
          lista.appendChild(li);
        });
      }

      document.getElementById('form').onsubmit = async e => {
        e.preventDefault();
        const formData = new FormData(e.target);
        await fetch('/tarefas', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ titulo: formData.get('titulo') })
        });
        e.target.reset();
        carregar();
      };

      carregar(); // Carrega ao iniciar
    </script>
  `);
});

// GET /tarefas - Retorna todas as tarefas
app.get('/tarefas', (req, res) => {
  res.json(tarefas);
});

// POST /tarefas - Cria nova tarefa
app.post('/tarefas', (req, res) => {
  const { titulo } = req.body;
  if (!titulo) return res.status(400).json({ error: 'Título obrigatório' });

  const novaTarefa = { id: proximoId++, titulo };
  tarefas.push(novaTarefa);
  res.status(201).json(novaTarefa);
});

// DELETE /tarefas/:id - Remove tarefa pelo ID
app.delete('/tarefas/:id', (req, res) => {
  const id = parseInt(req.params.id, 10);
  const idx = tarefas.findIndex(t => t.id === id);
  if (idx === -1) return res.status(404).json({ error: 'Tarefa não encontrada' });

  tarefas.splice(idx, 1);
  res.status(204).end();
});

// ----- Iniciar o servidor -----
app.listen(PORT, () => {
  console.log(`Servidor rodando em http://localhost:${PORT}`);
});
