Spaces:
Running
Running
| const asyncHandler = require("express-async-handler"); | |
| const Room = require("../models/RoomModel"); | |
| const Question = require("../models/QuestionsModel"); | |
| const User = require("../models/UserModel"); | |
| const Team = require("../models/TeamModel"); | |
| const Leaderboard = require("../models/LeaderboardModel"); | |
| const Round = require("../models/RoundsModel"); | |
| const { getRoomLeaderBoardR1R2, getRound3Leaderboard, getRound4Leaderboard } = require("../helpers/LeaderBoardPreFetch"); | |
| const CollaborativeLeaderboardModel = require("../models/CollaborativeLeaderboardModel"); | |
| const Certificates = require("../models/Certificates"); | |
| module.exports.profile=asyncHandler(async(req,res)=>{ | |
| try { | |
| let board; | |
| let rounds = await Round.find() | |
| let date = new Date(); | |
| let round | |
| for (let i in rounds) { | |
| if (date >= rounds[i].StartTime && date <= rounds[i].EndTime) { | |
| round = rounds[i]; | |
| break; | |
| } | |
| } | |
| if(round) | |
| { | |
| if(round.Round===1||round.Round===2||round.Round===4) | |
| board=await Leaderboard.findOne({TeamID:req.team._id,Round:round.Round}); | |
| else if(round.Round===3) | |
| board = await CollaborativeLeaderboardModel.findOne({ | |
| $or: [{ TeamID1: req.team._id }, { TeamID2: req.team._id }] | |
| }); | |
| } | |
| res.json({ | |
| Round:round.Round, | |
| TeamName:req.team.TeamName, | |
| UserName:req.user.Name, | |
| Points:board.Points, | |
| QuestionsSolved:board.Questions.Solved.length, | |
| TotalQuestions:(board.Questions.Solved.length)+(board.Questions.Unsolved.length), | |
| RoundEnd:round.EndTime, | |
| status:true | |
| }); | |
| } catch (error) { | |
| res.status(500).json({ | |
| message:error.message | |
| }) | |
| } | |
| }) | |
| module.exports.leaderboard=asyncHandler(async(req,res)=>{ | |
| try { | |
| let rounds=await Round.find(); | |
| let currentRound=0; | |
| let date=new Date(); | |
| for(let i in rounds){ | |
| if(date>=rounds[i].StartTime&&date<=rounds[i].EndTime){ | |
| currentRound=rounds[i].Round; | |
| } | |
| } | |
| if(currentRound===0){ | |
| res.json({ | |
| message:"Round Not Started", | |
| status:false | |
| }) | |
| } | |
| else if(currentRound===1||currentRound===2){ | |
| let leaderboard=await getRoomLeaderBoardR1R2(req.team,currentRound); | |
| if(leaderboard){ | |
| res.json({ | |
| LB:leaderboard, | |
| TeamName:req.team.TeamName, | |
| status:true | |
| }); | |
| } | |
| else{ | |
| res.json({ | |
| status:false | |
| }) | |
| } | |
| } | |
| else if(currentRound===3){ | |
| let leaderboard= await getRound3Leaderboard(); | |
| if(leaderboard){ | |
| res.json({ | |
| LB:leaderboard, | |
| TeamName:req.team.TeamName, | |
| status:true | |
| }); | |
| } | |
| else{ | |
| res.json({ | |
| status:false | |
| }) | |
| } | |
| } | |
| else if(currentRound===4){ | |
| let leaderboard=await getRound4Leaderboard(); | |
| if(leaderboard){ | |
| res.json({ | |
| LB:leaderboard, | |
| TeamName:req.team.TeamName, | |
| status:true | |
| }); | |
| } | |
| else{ | |
| res.json({ | |
| status:false | |
| }) | |
| } | |
| } | |
| else | |
| { | |
| res.json({ | |
| message:"Game Ended", | |
| status:false | |
| }) | |
| } | |
| } catch (error) { | |
| res.status(500).json({ | |
| message:error.message, | |
| status:false | |
| }) | |
| console.log(error); | |
| } | |
| }) | |
| module.exports.qsnsStatus=asyncHandler(async(req,res)=>{ | |
| try { | |
| let board=await Leaderboard.findOne({TeamID:req.team._id}); | |
| if(board){ | |
| res.json({ | |
| Questions:board.Questions | |
| }) | |
| } | |
| } catch (error) { | |
| res.status(500).json({ | |
| message:error.message | |
| }) | |
| } | |
| }) | |
| module.exports.newUsers=asyncHandler(async(req,res)=>{ | |
| try { | |
| let users=await User.find(); | |
| for(let i in users){ | |
| let team=await Team.findOne({_id:users[i].TeamID}); | |
| console.log(i); | |
| let newT={ | |
| Name:users[i].Name, | |
| Email:users[i].Email, | |
| PhoneNumber:users[i].PhoneNumber, | |
| RollNumber:users[i].RollNumber, | |
| Branch:users[i].Branch, | |
| Year:users[i].Year, | |
| DiscordID:users[i].DiscordID, | |
| Role:users[i].Role, | |
| } | |
| if(team){ | |
| newT={...newT,TeamName:team.TeamName}; | |
| } | |
| let newUser=await Certificates.create(newT); | |
| } | |
| res.json({ | |
| message:"Done" | |
| }) | |
| } catch (error) { | |
| res.status(500).json({ | |
| message:error.message | |
| }) | |
| } | |
| }) | |
| module.exports.rounds=asyncHandler(async(req,res)=>{ | |
| try { | |
| let data = req.body; | |
| if(data.Round!==0){ | |
| let round=await Round.findOne({Round:data.Round}) | |
| res.json({ | |
| StartTime:round.StartTime, | |
| status:true | |
| }); | |
| } | |
| else{ | |
| res.json({ | |
| status:false | |
| }) | |
| } | |
| } catch (error) { | |
| res.status(500).json({ | |
| message:error.message, | |
| status:false | |
| }) | |
| } | |
| }) | |