addFavorite team is working, button and remove will be finished tonight
This commit is contained in:
@@ -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 {
|
||||||
if (!req.session.user){
|
const { userID, teamID, teamName, teamLogo } = req.body;
|
||||||
|
|
||||||
|
// Check if the user is logged in
|
||||||
|
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 = {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
|
||||||
@@ -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, });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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">
|
||||||
<img id="club-favorite-button" src="/img/club-page/unfavorited.png" alt="Favorite Button" >
|
{{#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">
|
||||||
|
{{/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">
|
||||||
|
|||||||
Reference in New Issue
Block a user