Spaces:
Running
Running
| const asyncHandeler = require("express-async-handler"); | |
| const Leaderboard = require("../models/LeaderboardModel"); | |
| const Round = require("../models/RoundsModel"); | |
| const CollaborativeLeaderboardModel = require("../models/CollaborativeLeaderboardModel"); | |
| const { | |
| getFinalLeaderboard, | |
| getRound4Leaderboard, | |
| getRound3Leaderboard, | |
| getRoundLeaderboard, | |
| } = require("../helpers/LeaderBoardPreFetch"); | |
| const RoomModel = require("../models/RoomModel"); | |
| const account = require("../models/AuthenticationModel"); | |
| const UserModel = require("../models/UserModel"); | |
| exports.getVerifyResponse = asyncHandeler(async (req, res) => { | |
| try { | |
| let rounds = await Round.find(); | |
| let currentRound = 0; | |
| let nextRound = 0; | |
| let date = new Date(); | |
| for (i in rounds) { | |
| if (date <= rounds[i].EndTime && date >= rounds[i].StartTime) { | |
| currentRound = rounds[i].Round; | |
| break; | |
| } | |
| } | |
| for (i in rounds) { | |
| if (date <= rounds[i].StartTime) { | |
| nextRound = rounds[i].Round; | |
| break; | |
| } | |
| } | |
| let response = { | |
| nextRound: nextRound, | |
| currentRound: currentRound, | |
| team: req.team.TeamName, | |
| time: date, | |
| serverTime: new Date(), | |
| status: true, | |
| }; | |
| if (nextRound === 0) { | |
| response.message = "Game has ended"; | |
| } | |
| if (nextRound === 1) { | |
| response.message = "Round 1 starts in"; | |
| response.time = rounds[0].StartTime; | |
| } else if (nextRound === 2) { | |
| response.message = "Round 2 starts in"; | |
| response.time = rounds[1].StartTime; | |
| } else if (nextRound === 3) { | |
| response.message = "Round 3 starts in"; | |
| response.time = rounds[2].StartTime; | |
| } else if (nextRound === 4) { | |
| response.message = "Round 4 starts in"; | |
| response.time = rounds[3].StartTime; | |
| } | |
| if (currentRound === 1) { | |
| response.message = "Round 1 ends in"; | |
| response.time = rounds[0].EndTime; | |
| } else if (currentRound === 2) { | |
| response.message = "Round 2 ends in"; | |
| response.time = rounds[1].EndTime; | |
| } else if (currentRound === 3) { | |
| response.message = "Round 3 ends in"; | |
| response.time = rounds[2].EndTime; | |
| } else if (currentRound === 4) { | |
| response.message = "Round 4 ends in"; | |
| response.time = rounds[3].EndTime; | |
| } | |
| let board = await Leaderboard.findOne({ TeamID: req.team._id, Round: 0 }); | |
| response.points = board.Points; | |
| res.json(response); | |
| } catch (err) { | |
| console.log(err); | |
| res.status(500).json({ | |
| message: err.message, | |
| }); | |
| } | |
| }); | |
| exports.getMainLeaderboard = asyncHandeler(async (req, res) => { | |
| let rounds = await Round.find(); | |
| let resp = {}; | |
| resp.group = 1; | |
| resp.TeamName = req.team.TeamName; | |
| let prevRound = 0; | |
| let date = new Date(); | |
| for (let i in rounds) { | |
| if (date > rounds[i].EndTime) { | |
| prevRound = rounds[i].Round; | |
| } | |
| } | |
| //console.log(prevRound); | |
| if (prevRound === 0) { | |
| resp.LB = []; | |
| resp.LB.push(await getFinalLeaderboard()); | |
| if (resp.LB) resp.status = true; | |
| else { | |
| resp.status = false; | |
| resp.message = "Leaderboard is not available"; | |
| } | |
| } | |
| if (prevRound === 2) { | |
| resp.LB = await getRoundLeaderboard(2); | |
| if (resp.LB) resp.status = true; | |
| else { | |
| resp.status = false; | |
| resp.message = "Leaderboard is not available"; | |
| } | |
| let rooms = await RoomModel.find({ Round: 2 }); | |
| resp.group = | |
| rooms.findIndex((room) => { | |
| room._id === req.team.RoomID; | |
| }) + 1; | |
| } | |
| if (prevRound === 1) { | |
| resp.LB = await getRoundLeaderboard(1); | |
| if (resp.LB) resp.status = true; | |
| else { | |
| resp.status = false; | |
| resp.message = "Leaderboard is not available"; | |
| } | |
| let rooms = await RoomModel.find({ Round: 1 }); | |
| resp.group = | |
| rooms.findIndex((room) => { | |
| room._id === req.team.RoomID; | |
| }) + 1; | |
| } | |
| if (prevRound === 4) { | |
| resp.LB = []; | |
| resp.LB.push(await getRound4Leaderboard()); | |
| if (resp.LB) resp.status = true; | |
| else { | |
| resp.status = false; | |
| resp.message = "Leaderboard is not available"; | |
| } | |
| } | |
| if (prevRound === 3) { | |
| resp.LB = []; | |
| resp.LB.push(await getRound3Leaderboard()); | |
| if (resp.LB) resp.status = true; | |
| else { | |
| resp.status = false; | |
| resp.message = "Leaderboard is not available"; | |
| } | |
| } | |
| res.json(resp); | |
| }); | |
| module.exports.getstart = asyncHandeler(async (req, res) => { | |
| let rounds = await Round.find(); | |
| let resp = {}; | |
| resp.status = false; | |
| let date = new Date(); | |
| for (i in rounds) { | |
| if (date <= rounds[i].EndTime && date >= rounds[i].StartTime) { | |
| resp.Round = rounds[i].Round; | |
| resp.StartTime = rounds[i].StartTime; | |
| resp.EndTime = rounds[i].EndTime; | |
| resp.status = true; | |
| break; | |
| } else if (date <= rounds[i].StartTime) { | |
| resp.Round = rounds[i].Round; | |
| resp.StartTime = rounds[i].StartTime; | |
| resp.EndTime = rounds[i].EndTime; | |
| resp.status = true; | |
| break; | |
| } | |
| } | |
| res.json(resp); | |
| }); | |
| module.exports.getDelete = asyncHandeler(async (req, res) => { | |
| await account.findOneAndDelete({ UserID: req.user._id }); | |
| res.clearCookie("SessionID"); | |
| let resp = {}; | |
| resp.status = true; | |
| resp.message = "Cookie Deleted"; | |
| res.send(resp); | |
| }); | |
| module.exports.getMembers = asyncHandeler(async (req, res) => { | |
| try { | |
| let members = req.team.Members; | |
| let names = []; | |
| for (i in members) { | |
| let user = await UserModel.findOne({ _id: members[i] }); | |
| if (user) { | |
| names.push({ | |
| Name: user.Name, | |
| Discord: user.DiscordID, | |
| Role: user.Role, | |
| }); | |
| } | |
| } | |
| res.json({ | |
| members: names, | |
| status: true, | |
| }); | |
| } catch (error) { | |
| res.status(500).json({ | |
| message: error.message, | |
| status: false, | |
| }); | |
| } | |
| }); | |