Skip to content
Snippets Groups Projects
Select Git revision
  • ad0b97be701f2edd7e3933a9532919d32bf6eefa
  • main default protected
2 results

manager.js

Blame
  • 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;