addFavorite team is working, button and remove will be finished tonight

This commit is contained in:
Vishal Vunnam
2024-04-21 14:11:35 -06:00
parent ac19be3cd9
commit 75d9560293
5 changed files with 87 additions and 85 deletions

View File

@@ -121,11 +121,22 @@ app.get('/league/:leagueID', [fetchLeaguesData, fetchLeagueScorerData], (req, re
// Clubs Page Middleware // Clubs Page Middleware
const fetchClubsData = require('./resources/middleware/clubs-page/get-current-club-information'); const fetchClubsData = require('./resources/middleware/clubs-page/get-current-club-information');
const fetchClubTopScorers = require('./resources/middleware/clubs-page/get-current-club-top-scorers');
app.get('/club/:clubID', [fetchClubsData, fetchClubTopScorers], (req, res) => { app.get('/club/:clubID', [fetchClubsData], (req, res) => {
// Render the Handlebars view with league data // Render the Handlebars view with league data
var isFav = false;
var fav_teams = res.locals.fav_teams;
if(res.locals.user && fav_teams)
{
const isTeamIDInFavTeams = fav_teams.some(team => team.teamid === req.params.clubID);
console.log(isTeamIDInFavTeams);
if (isTeamIDInFavTeams) {
isFav = true
}
}
res.render('pages/clubs-page', { res.render('pages/clubs-page', {
isFav: isFav,
clubID: req.params.clubID, clubID: req.params.clubID,
clubs: res.locals.club clubs: res.locals.club
}); });
@@ -172,7 +183,6 @@ app.post('/login', async (req, res) => {
// Save user information in the session variable // Save user information in the session variable
req.session.user = user; req.session.user = user;
req.session.save(); req.session.save();
console.log(user);
// Redirect user to the home page // Redirect user to the home page
res.redirect('/home'); res.redirect('/home');
@@ -255,32 +265,33 @@ generateClubRoutes(app);
// Function to add a new row to the FavoriteTeams table // Function to add a new row to the FavoriteTeams table
// database configuration // database configuration
app.post('/favteam/add', async (req, res) => { app.post('/favteam/add', async (req, res, next) => {
try { try {
const { userID, teamID, teamName, teamLogo } = req.body;
// Check if the user is logged in
if (!req.session.user) { if (!req.session.user) {
return res.status(400).json({ message: 'Login or register to add a favorite team.' }); return res.status(400).json({ message: 'Login or register to add a favorite team.' });
} }
const { userID, teamID, teamName, teamLogo } = req.body; // // Check if the team name already exists for the user
// const existingTeam = await db.oneOrNone(
// 'SELECT * FROM FavoriteTeams WHERE UserID = $1 AND TeamName = $2',
// [userID, teamName]
// );
// if (existingTeam) {
// return res.status(400).json({ message: 'This team is already in your favorites.' });
// }
// Check if the team name already exists for the user // // Check if user has more than 5 teams stored
const existingTeam = await db.oneOrNone( // const { team_count } = await db.one(
'SELECT * FROM FavoriteTeams WHERE UserID = $1 AND TeamName = $2', // 'SELECT COUNT(*) AS team_count FROM FavoriteTeams WHERE UserID = $1',
[userID, teamName] // [userID]
); // );
if (existingTeam) { // if (team_count >= 5) {
return res.status(400).json({ message: 'This team is already in your favorites.' }); // console.log('User has reached the maximum number of favorite teams.');
} // return res.status(400).json({ message: 'User has reached the maximum number of favorite teams.' });
// }
// Check if user has more than 5 teams stored
const { team_count } = await db.one(
'SELECT COUNT(*) AS team_count FROM FavoriteTeams WHERE UserID = $1',
[userID]
);
if (team_count >= 5) {
console.log('User has reached the maximum number of favorite teams.');
return res.status(400).json({ message: 'User has reached the maximum number of favorite teams.' });
}
// Insert the new favorite team into the database // Insert the new favorite team into the database
const query = { const query = {

View File

@@ -1,23 +1,34 @@
document.addEventListener("DOMContentLoaded", function() { document.addEventListener("DOMContentLoaded", function() {
console.log(clubData.club.club_ID);
var favoriteButton = document.getElementById("club-favorite-button"); var favoriteButton = document.getElementById("club-favorite-button");
if (favoriteButton) { if (favoriteButton) {
favoriteButton.addEventListener("click", function() { favoriteButton.addEventListener("click", function() {
if (favoriteButton.src.includes("/favorited.png")) { var userID = document.getElementById("userID").value;
favoriteButton.src = "/img/club-page/unfavorited.png"; var teamID = document.getElementById("teamID").value;
removeFavoriteTeam(1, 3); var teamName = document.getElementById("teamName").value;
} else { var teamLogo = document.getElementById("teamLogo").value;
console.log("kjhdsgkjh");
favoriteButton.src = "/img/club-page/favorited.png";
addFavoriteTeam(1, 3, 'Manchester City FC', 'https://crests.football-data.org/65.png');
if (favoriteButton.src.includes("/favorited.png")) {
removeFavoriteTeam(userID, teamID)
.then(() => {
favoriteButton.src = "/img/club-page/unfavorited.png";
})
.catch(error => {
console.error('Error removing favorite team:', error);
});
} else {
addFavoriteTeam(userID, teamID, teamName, teamLogo)
.then(() => {
favoriteButton.src = "/img/club-page/favorited.png";
})
.catch(error => {
console.error('Error adding favorite team:', error);
});
} }
}); });
} }
}); });
async function addFavoriteTeam(userID, teamID, teamName, teamLogo){ async function addFavoriteTeam(userID, teamID, teamName, teamLogo){
try { try {
console.log("yesss")
const response = await fetch('/favteam/add', { const response = await fetch('/favteam/add', {
method: 'POST', method: 'POST',
headers: { headers: {
@@ -30,12 +41,15 @@ async function addFavoriteTeam(userID, teamID, teamName, teamLogo) {
teamLogo: teamLogo teamLogo: teamLogo
}) })
}); });
if (!response.ok) { if (!response.ok) {
throw new Error('Failed to add favorite team'); throw new Error('Failed to add favorite team');
} }
console.log('New favorite team added successfully.'); console.log('New favorite team added successfully.');
} catch (error) { } catch (error) {
console.error('Error adding favorite team:', error); console.error('Error adding favorite team:', error);
} }
} }
async function removeFavoriteTeam(userID, teamID) { async function removeFavoriteTeam(userID, teamID) {

View File

@@ -1,36 +0,0 @@
const axios = require('axios');
// Middleware function to fetch leagues data
const fetchLeagueScorerData = async (req, res, next) => {
try {
// Extract league ID from the URL
const leagueID = req.params.leagueID;
// Make GET request to the API endpoint using the league ID
const response = await axios.get(`http://api.football-data.org/v4/teams/${teamID}/scorers?limit=5`, {
headers: {
'X-Auth-Token': '0aa1ed31245d4a36b1ef5a79150324b3', // Add your API key here
},
});
// Extract relevant data from the API response
const scorerData = response.data;
// Attach the data to res.locals
res.locals.topScorers = {
scorers: scorerData.scorers.map(player => ({
playerID: scorer.player.id,
playerName: scorer.player.name,
goals: scorer.numberOfGoals,
}))
};
next();
} catch (error) {
console.error('Error fetching leagues data:', error);
res.locals.topScorers = null; // Set to null if there's an error
next(); // Call next middleware or route handler
}
};
module.exports = fetchLeagueScorerData;

View File

@@ -9,9 +9,8 @@ module.exports = function generateClubRoutes(app) {
app.get('/club/:clubID', (req, res) => { app.get('/club/:clubID', (req, res) => {
// Extract the league name from the URL parameters // Extract the league name from the URL parameters
const clubID = req.params.clubID; const clubID = req.params.clubID;
// Render the league page template using Handlebars // Render the league page template using Handlebars
res.render('pages/club-page', { clubID: clubID, user:user }); res.render('pages/club-page', { clubID: clubID, });
}); });
}; };

View File

@@ -5,7 +5,21 @@
<img id="generated-page-header-logo" src="{{club.crest}}" alt="{{club.name}} Logo"> <img id="generated-page-header-logo" src="{{club.crest}}" alt="{{club.name}} Logo">
<h1 id="generated-page-header-title">{{club.name}}</h1> <h1 id="generated-page-header-title">{{club.name}}</h1>
<img id="generated-page-header-flag" src="{{club.area.club_flag}}" alt="{{club.name}} Flag"> <img id="generated-page-header-flag" src="{{club.area.club_flag}}" alt="{{club.name}} Flag">
{{#if user}}
{{#if isFav}}
<img id="club-favorite-button" src="/img/club-page/favorited.png" alt="Favorite Button">
{{else}}
<img id="club-favorite-button" src="/img/club-page/unfavorited.png" alt="Favorite Button"> <img id="club-favorite-button" src="/img/club-page/unfavorited.png" alt="Favorite Button">
{{/if}}
{{else}}
Please sign in
{{/if}}
<!-- Hidden input fields -->
<input type="hidden" id="userID" value="{{user.userid}}">
<input type="hidden" id="teamID" value="{{club.club_id}}">
<input type="hidden" id="teamName" value="{{club.name}}">
<input type="hidden" id="teamLogo" value="{{club.crest}}">
</div> </div>
<div id="club-page-contents-container" class="page-content-container"> <div id="club-page-contents-container" class="page-content-container">