// Anderson Valadares Pinto (20251PL.TSIAD0018) [SLS] import express from 'express'; import path from 'path'; import { fileURLToPath } from 'url'; // Configuração para resolução de caminhos com ES Modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); const PORT = process.env.PORT || 3000; // Configuração do mecanismo de visualização EJS app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); // Array com os dados dos times (conforme solicitado no enunciado com estádios distintos) const times = [ { id: 1, nome: 'Flamengo', estadio: 'Estádio do Maracanã', cidade: 'Rio de Janeiro - RJ' }, { id: 2, nome: 'Palmeiras', estadio: 'Nubank Parque', cidade: 'São Paulo - SP' }, { id: 3, nome: 'Cruzeiro', estadio: 'Estádio Mineirão', cidade: 'Belo Horizonte - MG' }, { id: 4, nome: 'Athletico-PR', estadio: 'Ligga Arena (AKA Arena da Baixada)', cidade: 'Curitiba - PR' }, { id: 5, nome: 'Bahia', estadio: 'Arena Fonte Nova', cidade: 'Salvador - BA' }, { id: 6, nome: 'Red Bull Bragantino', estadio: 'Estádio Municipal Cícero de Souza Marques', cidade: 'Bragança Paulista - SP' }, { id: 7, nome: 'São Paulo', estadio: 'MorumBIS', cidade: 'São Paulo - SP' } ]; // Rota GET / - Boas-vindas app.get('/', (req, res) => { res.render('index', { titulo: 'Catálogo de Times do Brasileirão', mensagem: 'Bem-vindo ao Catálogo Interativo de Times de Futebol!', totalTimes: times.length }); }); // Rota GET /times - Listagem de times app.get('/times', (req, res) => { res.render('times', { titulo: 'Lista de Times', times }); }); // Rota GET /times/:id - Detalhes de um time por ID app.get('/times/:id', (req, res) => { const id = parseInt(req.params.id, 10); const time = times.find((item) => item.id === id); if (!time) { return res.status(404).render('detalhe', { titulo: 'Time Não Encontrado', time: null, mensagemErro: `Time com ID ${req.params.id} não foi encontrado no catálogo.` }); } res.render('detalhe', { titulo: `Detalhes - ${time.nome}`, time, mensagemErro: null }); }); // Inicialização do servidor app.listen(PORT, () => { console.log(`Servidor rodando com sucesso na porta ${PORT}: http://localhost:${PORT}`); });