Select Git revision
-
waaterr1208 authoredwaaterr1208 authored
manager.js 6.25 KiB
//manager.js
const express = require('express');
const router = express.Router();
const path = require('path');
const mysql = require('mysql');
const db = require('./db');
// 관리자 페이지 라우트
router.get('/manager', (req, res) => {
const usercode = req.session.usercode;
if (!usercode) {
// 사용자가 로그인하지 않은 경우 로그인 페이지로 리다이렉트
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 });
});
});
}
});
}
});
// 게임 참가자 목록을 반환하는 엔드포인트 추가
router.get('/manager/participants', (req, res) => {
const gameCode = req.query.gameCode;
const getParticipantsQuery = `
SELECT
users.Name,
users.Code AS User_Code,
users.Phone
FROM
play_in
INNER JOIN users ON play_in.User_Code = users.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);
});
});
// 예정된 게임 취소
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(`
<script>
alert('게임이 성공적으로 취소되었습니다.');
window.location.href = '/manager';
</script>
`);
});
});
module.exports = router;