diff --git a/Nodejs/Mypage.js b/Nodejs/Mypage.js index 8cb42c8d2167817f01dab1a387bef3bffd8b69d0..51fbd4140f0904692a234289979c1eea35f2fc60 100644 --- a/Nodejs/Mypage.js +++ b/Nodejs/Mypage.js @@ -15,56 +15,31 @@ router.get('/mypage', (req, res) => { // 사용자 정보 불러오는 쿼리 const getUserQuery = ` SELECT - Code,Name,Phone + User_Code,Name,Phone FROM users - WHERE Code = ${usercode}`; + WHERE User_Code = ${usercode}`; - // 이전 게임 목록을 불러오는 쿼리 + valid 값 불러오기 - const previousGamesQuery = ` - SELECT - play_in.User_Code, - games.Code, - games.Date, - games.valid, - arena.Stadium, - (users.Name) AS ManagerName, -- 추가: 경기장 관리자의 이름 - (sports.Name) AS SportName, -- 추가: 해당 경기의 스포츠 이름 - times.StartTime, - times.EndTime, - (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Code) AS SameGamesCount - FROM - play_in - JOIN games ON play_in.Game_Code = games.Code - JOIN arena ON games.Ground_Name = arena.Field_Name - JOIN times ON games.Time_Code = times.Code - JOIN sports ON arena.Sports_Type = sports.Name -- 추가: 스포츠 테이블과 조인 - JOIN users ON arena.Mgr_Code = users.Code -- 추가: 관리자의 사용자 코드를 사용하여 users 테이블과 조인 - WHERE - play_in.User_Code = ${usercode} AND games.Date < CURDATE()`; - - // 사용자 게임 예약 내역 불러오는 쿼리 + valid 불러오는 쿼리 + // 경기 목록 불러오는 쿼리 const getGamesQuery = ` - SELECT - games.*, - arena.Stadium, - users.Name AS ManagerName, - sports.Name AS SportName, - times.StartTime, - times.EndTime, - (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Code) AS SameGamesCount + SELECT + games.*, + stadium.Name AS StadiumName, + users.Name AS ManagerName, + sports.Name AS SportName, + times.StartTime, + times.EndTime, + (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Game_Code) AS SameGamesCount FROM - play_in - INNER JOIN games ON play_in.Game_Code = games.Code - INNER JOIN arena ON games.Ground_Name = arena.Field_Name - INNER JOIN times ON games.Time_Code = times.Code + play_in + INNER JOIN games ON play_in.Game_Code = games.Game_Code + INNER JOIN arena ON games.Arena_Name = arena.Arena_Name + INNER JOIN stadium ON arena.Arena_Name = stadium.arena_name + INNER JOIN times ON games.Time_Code = times.Time_Code INNER JOIN sports ON arena.Sports_Type = sports.Name - INNER JOIN users ON arena.Mgr_Code = users.Code + INNER JOIN users ON arena.Mgr_Code = users.User_Code WHERE - play_in.User_Code = ${usercode} - GROUP BY - games.Code, arena.Stadium, users.Name, sports.Name, times.StartTime, times.EndTime`; - - + play_in.User_Code = ${usercode} +`; db.query(getUserQuery, (getUserErr, userResult) => { @@ -76,13 +51,6 @@ router.get('/mypage', (req, res) => { const userInfo = userResult[0]; - db.query(previousGamesQuery, (err, previousGamesResult) => { - if (err) { - console.error('이전 게임 목록 쿼리 오류:', err.stack); - res.status(500).send('Internal Server Error'); - return; - } - db.query(getGamesQuery, (getGamesErr, gamesResult) => { if (getGamesErr) { console.error('게임 정보 조회 중 오류 발생:', getGamesErr.stack); @@ -91,16 +59,13 @@ router.get('/mypage', (req, res) => { } if (userResult.length > 0) { - const previousGames = previousGamesResult; - res.render('BBFP_Mypage.html', { userInfo, gamesResult, previousGames }); + res.render('BBFP_Mypage.html', { userInfo, gamesResult}); } else { res.status(404).send('사용자 정보를 찾을 수 없습니다.'); } }); - }); - }); } }); @@ -141,10 +106,10 @@ router.get('/mypage/participants', (req, res) => { const getParticipantsQuery = ` SELECT users.Name, - users.Code AS User_Code + users.User_Code FROM play_in - INNER JOIN users ON play_in.User_Code = users.Code + INNER JOIN users ON play_in.User_Code = users.User_Code WHERE play_in.Game_Code = ${gameCode} `; @@ -155,6 +120,7 @@ router.get('/mypage/participants', (req, res) => { res.status(500).json({ error: 'Internal Server Error' }); return; } + console.log('participants : ',participants); res.json(participants); }); diff --git a/Nodejs/manager.js b/Nodejs/manager.js index 855c6272f5651e7f5e861388baa12739e43d2517..b2c3f832a9153bbfbf8d7187e5f2a5e1470dd199 100644 --- a/Nodejs/manager.js +++ b/Nodejs/manager.js @@ -8,161 +8,127 @@ const db = require('./db'); // 관리자 페이지 라우트 router.get('/manager', (req, res) => { - const usercode = req.session.usercode; + const usercode = req.session.usercode; + + if (!usercode) { + // 사용자가 로그인하지 않은 경우 로그인 페이지로 리다이렉트 + res.redirect('/login'); + } else { + //관리자 세부 정보를 검색하는 쿼리 + const getUserquery = ` + SELECT users.User_Code AS usercode, users.Name AS username, users.Phone AS userphone, + arena.arena_name AS fieldname, arena.Sports_Type AS sprots + FROM users + INNER JOIN arena ON users.User_Code = arena.Mgr_Code + WHERE users.User_Code = ${usercode};`; + + // 쿼리 실행 + db.query(getUserquery, (getUserErr, userResult) => { + if (getUserErr) { + console.error('데이터베이스 쿼리 오류:', err.stack); + res.status(500).send('내부 서버 오류'); + return; + } - if (!usercode) { - // 사용자가 로그인하지 않은 경우 로그인 페이지로 리다이렉트 + if (userResult.length === 0) { + // 일치하는 사용자가 없는 경우 로그인 페이지로 리다이렉트 res.redirect('/login'); - } else { - // 사용자 정보와 관리자 세부 정보를 검색하는 쿼리 - const getUserquery = ` - SELECT users.Code AS usercode, users.Name AS username, users.Phone AS userphone, - arena.Field_Name AS fieldname, arena.Sports_Type AS sprots - FROM users - INNER JOIN arena ON users.Code = arena.Mgr_Code - WHERE users.Code = ${usercode};`; - - // 쿼리 실행 - db.query(getUserquery, (getUserErr, userResult) => { - if (getUserErr) { - console.error('데이터베이스 쿼리 오류:', err.stack); - res.status(500).send('내부 서버 오류'); - return; - } - - if (userResult.length === 0) { - // 일치하는 사용자가 없는 경우 로그인 페이지로 리다이렉트 - res.redirect('/login'); - } else { - // 사용자 정보 추출 - const userInfo = userResult[0]; - - // 경기 목록 불러오는 쿼리 + 게임 valid 추가 - const gamesQuery = - `SELECT - games.Code, - games.Date, - games.valid, - times.StartTime, - times.EndTime, - COUNT(play_in.User_Code) AS totalParticipants, - GROUP_CONCAT(users.Name) AS participantNames, - GROUP_CONCAT(users.Phone) AS participantPhones - FROM - games - INNER JOIN arena ON games.Ground_Name = arena.Field_Name - INNER JOIN times ON games.Time_Code = times.Code - LEFT JOIN play_in ON games.Code = play_in.Game_Code - LEFT JOIN users ON play_in.User_Code = users.Code - WHERE - arena.Mgr_Code = ${usercode} - GROUP BY - games.Code, games.Date, times.StartTime, times.EndTime;`; - - // Execute the games query - db.query(gamesQuery, (gamesErr, gamesResult) => { - if (gamesErr) { - console.error('게임 쿼리 오류:', gamesErr.stack); - res.status(500).send('내부 서버 오류'); - return; - } - - console.log('게임 결과:', gamesResult); // 이 줄을 추가하여 콘솔에 로그 출력 - - // 이전 경기 목록 불러오는 쿼리 + 게임 valid 추가 - const previousGamesQuery = ` - SELECT - games.Code, - games.Date, - games.valid, - times.StartTime, - times.EndTime, - (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Code) AS totalParticipants, - GROUP_CONCAT(users.Name) AS participantNames, - GROUP_CONCAT(users.Phone) AS participantPhones - FROM - games - INNER JOIN arena ON games.Ground_Name = arena.Field_Name - INNER JOIN times ON games.Time_Code = times.Code - LEFT JOIN play_in ON games.Code = play_in.Game_Code - LEFT JOIN users ON play_in.User_Code = users.Code - WHERE - arena.Mgr_Code = ${usercode} AND games.Date < CURDATE() - GROUP BY - games.Code, games.Date, times.StartTime, times.EndTime;`; - - - - db.query(previousGamesQuery, (previousGamesErr, previousGamesResult) => { - if (previousGamesErr) { - console.error('이전 게임 쿼리 오류:', previousGamesErr.stack); - res.status(500).send('내부 서버 오류'); - return; - } - - console.log('이전 게임 결과:', userInfo); // 이 줄을 추가하여 콘솔에 로그 출력 - - res.render('BBFP_Manager.html', { userInfo, gamesResult, previousGamesResult }); - }); - }); - } + } else { + // 사용자 정보 추출 + const userInfo = userResult[0]; + + // 경기 목록 불러오는 쿼리 + const gamesQuery = ` + SELECT + games.Game_Code, + games.Date, + games.valid, + times.StartTime, + times.EndTime, + (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Game_Code) AS totalParticipants, + GROUP_CONCAT(users.Name) AS participantNames, + GROUP_CONCAT(users.Phone) AS participantPhones + FROM + games + INNER JOIN arena ON games.arena_name = arena.arena_name + INNER JOIN times ON games.Time_Code = times.Time_Code + LEFT JOIN play_in ON games.Game_Code = play_in.Game_Code + LEFT JOIN users ON play_in.User_Code = users.User_Code + WHERE + arena.Mgr_Code = ${usercode} + GROUP BY + games.Game_Code, games.Date, times.StartTime, times.EndTime;`; + + // Execute the games query + db.query(gamesQuery, (gamesErr, gamesResult) => { + if (gamesErr) { + console.error('게임 쿼리 오류:', gamesErr.stack); + res.status(500).send('내부 서버 오류'); + return; + } + + console.log('게임 결과:', gamesResult); // 이 줄을 추가하여 콘솔에 로그 출력 + + res.render('BBFP_Manager.html', { userInfo, gamesResult }); }); - } + } + }); + } }); // 게임 참가자 목록을 반환하는 엔드포인트 추가 router.get('/manager/participants', (req, res) => { - const gameCode = req.query.gameCode; - - const getParticipantsQuery = ` + const gameCode = req.query.gameCode; + + const getParticipantsQuery = ` SELECT users.Name, - users.Code AS User_Code, + users.User_Code AS User_Code, users.Phone FROM play_in - INNER JOIN users ON play_in.User_Code = users.Code + INNER JOIN users ON play_in.User_Code = users.User_Code WHERE play_in.Game_Code = ${gameCode} `; - - db.query(getParticipantsQuery, (err, participants) => { - if (err) { - console.error('Error fetching participants:', err.stack); - res.status(500).json({ error: 'Internal Server Error' }); - return; - } - - res.json(participants); - }); + + db.query(getParticipantsQuery, (err, participants) => { + if (err) { + console.error('Error fetching participants:', err.stack); + res.status(500).json({ error: 'Internal Server Error' }); + return; + } + + res.json(participants); }); +}); - // 예정된 게임 취소 - router.post('/manager/cancelReservation', (req, res) => { - const gameCode = req.body.gameCode; - - console.log('삭제 쿼리:', gameCode); - - const deleteReservationQuery = ` - UPDATE games SET valid = false WHERE games.Code=${gameCode};`; - - - db.query(deleteReservationQuery, (deleteErr, deleteResult) => { - if (deleteErr) { - console.error('예약 취소 중 오류 발생:', deleteErr.stack); - res.status(500).send(`Internal Server Error: ${deleteErr.message}`); - return; - } - - // 성공적으로 삭제되었을 때 처리 - res.send(` +// 예정된 게임 취소 +router.post('/manager/cancelReservation', (req, res) => { + const gameCode = req.body.gameCode; + + console.log('삭제 쿼리:', gameCode); + + const deleteReservationQuery = ` + UPDATE games SET valid = false WHERE games.Game_Code=${gameCode};`; + + + db.query(deleteReservationQuery, (deleteErr, deleteResult) => { + if (deleteErr) { + console.error('예약 취소 중 오류 발생:', deleteErr.stack); + res.status(500).send(`Internal Server Error: ${deleteErr.message}`); + return; + } + + // 성공적으로 삭제되었을 때 처리 + res.send(` <script> alert('게임이 성공적으로 취소되었습니다.'); window.location.href = '/manager'; </script> `); - }); }); +}); module.exports = router; diff --git a/Nodejs/views/BBFP_Manager.html b/Nodejs/views/BBFP_Manager.html index 00aa47c8035f76e7cddf61c690430691d05bca85..de5cdfddd78c0ca2fd350778d3fa0e9bbc621363 100644 --- a/Nodejs/views/BBFP_Manager.html +++ b/Nodejs/views/BBFP_Manager.html @@ -59,19 +59,19 @@ <%= games.StartTime %> - <%= games.EndTime %> </td> <td> - <%= games.Code %> + <%= games.Game_Code %> </td> <td> <%= games.totalParticipants %> </td> <td> <button class="participants-toggle" - onclick="toggleParticipants('<%= games.Code %>')">상세</button> + onclick="toggleParticipants('<%= games.Game_Code %>')">상세</button> </td> <td> <!--게임 취소 버튼 추가--> <form action="/manager/cancelReservation" method="POST"> - <input type="hidden" name="gameCode" value="<%= games.Code %>"> + <input type="hidden" name="gameCode" value="<%= games.Game_Code %>"> <% console.log('-----------현재 게임 결과------------------:', games); %> <button type="submit" class="cancel">취소</button> </form> @@ -113,14 +113,14 @@ <%= games.StartTime %> - <%= games.EndTime %> </td> <td> - <%= games.Code %> + <%= games.Game_Code %> </td> <td> <%= games.totalParticipants %> </td> <td> <button class="participants-toggle" - onclick="toggleParticipants('<%= games.Code %>')">상세</button> + onclick="toggleParticipants('<%= games.Game_Code %>')">상세</button> </td> </tr> @@ -145,8 +145,8 @@ <th scope="col">참가자 정보</th> <th scope="col">기타</th> </tr> - <% if (previousGamesResult.length> 0) { %> - <% previousGamesResult .filter(previous=> new Date() >= new Date(previous.Date)) // 현재 이전인 것만 필터링 + <% if (gamesResult.length> 0) { %> + <% gamesResult .filter(previous=> new Date() >= new Date(previous.Date)) // 현재 이전인 것만 필터링 .sort((a, b) => new Date(b.Date) - new Date(a.Date)) // 날짜를 내림차순으로 정렬 .forEach(function (previous, index) { %> <% const gameDate=new Date(previous.Date); %> @@ -159,14 +159,14 @@ <%= previous.StartTime %> - <%= previous.EndTime %> </td> <td> - <%= previous.Code %> + <%= previous.Game_Code %> </td> <td> <%= previous.totalParticipants %> </td> <td> <button class="participants-toggle" - onclick="toggleParticipants('<%= previous.Code %>')">상세</button> + onclick="toggleParticipants('<%= previous.Game_Code %>')">상세</button> </td> <td> <!-- 경기 취소 여부 보여줌 --> <% if(previous.valid){ %> diff --git a/Nodejs/views/BBFP_Mypage.html b/Nodejs/views/BBFP_Mypage.html index 9defdc637f46865b722e89f00e5e59bc87cd21a8..3fe0ba8997199a20658583ce658707f03fe0c0aa 100644 --- a/Nodejs/views/BBFP_Mypage.html +++ b/Nodejs/views/BBFP_Mypage.html @@ -22,7 +22,7 @@ <h2>내 정보</h2> <% console.log('-----------게임 결과------------------:',userInfo); %> <div class="divider"></div> - <p><b>회원번호</b>: <%= userInfo.Code %> + <p><b>회원번호</b>: <%= userInfo.User_Code %> </p> <p><b>이름</b>: <%= userInfo.Name %> </p> @@ -53,7 +53,7 @@ 1).padStart(2, '0' ) + '-' + String(gameDate.getDate()).padStart(2, '0' ) %> </td> <td> - <%= game.Stadium %> + <%= game.StadiumName %> </td> <td> <%= game.StartTime %> - <%= game.EndTime %> @@ -67,12 +67,12 @@ <td> <%= game.SameGamesCount %> <button class="participants-toggle" - onclick="toggleParticipants('<%= game.Code %>')">상세</button> + onclick="toggleParticipants('<%= game.Game_Code %>')">상세</button> </td> <td> <form action="/mypage/cancelReservation" method="POST"> - <input type="hidden" name="gameCode" value="<%= game.Code %>"> - <input type="hidden" name="userCode" value="<%= userInfo.Code %>"> + <input type="hidden" name="gameCode" value="<%= game.Game_Code %>"> + <input type="hidden" name="userCode" value="<%= userInfo.User_Code %>"> <% console.log('-----------게임 결과------------------:', game); %> <button type="submit" class="cancel">취소</button> </form> @@ -109,7 +109,7 @@ 1).padStart(2, '0' ) + '-' + String(gameDate.getDate()).padStart(2, '0' ) %> </td> <td> - <%= game.Stadium %> + <%= game.StadiumName %> </td> <td> <%= game.StartTime %> - <%= game.EndTime %> @@ -123,7 +123,7 @@ <td> <%= game.SameGamesCount %> <button class="participants-toggle" - onclick="toggleParticipants('<%= game.Code %>')">상세</button> + onclick="toggleParticipants('<%= game.Game_Code %>')">상세</button> </td> </tr> <% }); %> @@ -148,9 +148,9 @@ <th scope="col">참가인원</th> <!-- New column for participant count --> <th scope="col">취소여부</th> </tr> - <% if (previousGames.length> 0) { %> - <% console.log('-----------게임 결과------------------:', previousGames); %> - <% previousGames .filter(previous=> new Date() >= new Date(previous.Date)) // 날짜가 현재 날짜보다 이전인 것만 필터링 + <% if (gamesResult.length> 0) { %> + <% console.log('-----------게임 결과------------------:', gamesResult); %> + <% gamesResult .filter(previous=> new Date() >= new Date(previous.Date)) // 날짜가 현재 날짜보다 이전인 것만 필터링 .sort((a, b) => new Date(b.Date) - new Date(a.Date)) // 날짜를 내림차순으로 정렬 .forEach(function (previous, index) { %> <% const gameDate=new Date(previous.Date); %> @@ -162,7 +162,7 @@ ) %> </td> <td> - <%= previous.Stadium %> + <%= previous.StadiumName %> </td> <td> <%= previous.StartTime %> - <%= previous.EndTime %> @@ -176,7 +176,7 @@ <td> <%= previous.SameGamesCount %> <button class="participants-toggle" - onclick="toggleParticipants('<%= previous.Code %>')">상세</button> + onclick="toggleParticipants('<%= previous.Game_Code %>')">상세</button> </td> <td> <!-- 경기 취소 여부 보여줌 --> <% if(previous.valid){ %> diff --git a/Nodejs/views/test.js b/Nodejs/views/test.js new file mode 100644 index 0000000000000000000000000000000000000000..7ca29fb7cf4909b671b930febeb531be9dfd5787 --- /dev/null +++ b/Nodejs/views/test.js @@ -0,0 +1,44 @@ +const getGamesQuery = ` +SELECT + games.*, + stadium.Name, + users.Name AS ManagerName, + sports.Name AS SportName, + times.StartTime, + times.EndTime, + (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Game_Code) AS SameGamesCount +FROM + play_in +INNER JOIN games ON play_in.Game_Code = games.Game_Code +INNER JOIN arena ON games.Ground_Name = arena.Arena_Name +INNER JOIN times ON games.Time_Code = times.Time_Code +INNER JOIN sports ON arena.Sports_Type = sports.Name +INNER JOIN users ON arena.Mgr_Code = users.User_Code +WHERE + play_in.User_Code = ${usercode} +GROUP BY + games.Game_Code, Stadium.Name, users.Name, sports.Name, times.StartTime, times.EndTime`; + + + + + const previousGamesQuery = ` + SELECT + games.Game_Code, + games.Date, + games.valid, + times.StartTime, + times.EndTime, + (SELECT COUNT(*) FROM play_in WHERE Game_Code = games.Game_Code) AS totalParticipants, + GROUP_CONCAT(users.Name) AS participantNames, + GROUP_CONCAT(users.Phone) AS participantPhones + FROM + games + INNER JOIN arena ON games.arena_name = arena.arena_name + INNER JOIN times ON games.Time_Code = times.Time_Code + LEFT JOIN play_in ON games.Game_Code = play_in.Game_Code + LEFT JOIN users ON play_in.User_Code = users.User_Code + WHERE + arena.Mgr_Code = ${usercode} AND games.Date < CURDATE() + GROUP BY + games.Game_Code, games.Date, times.StartTime, times.EndTime;`; \ No newline at end of file