Spaces:
Running
Running
| const express = require('express') | |
| const crypto = require('crypto') | |
| const mail = require('../config/MailConfig.js') | |
| const Team = require('../models/TeamModel.js') | |
| const User = require('../models/UserModel.js') | |
| const LeaderBoard = require('../models/LeaderboardModel.js') | |
| const Coupon = require('../models/CouponModel.js') | |
| const validator = require('../middlewares/UserValidator.js') | |
| const dotenv = require("dotenv"); | |
| dotenv.config({ path: "./config.env" }); | |
| var successTeam, successUser, successLeaderBoard; | |
| module.exports.createTeam = async function createTeam(req, res) { | |
| try { | |
| let data = (req.body) | |
| let TeamName = data.TeamName | |
| let Code = crypto.randomBytes(4).toString("hex"); | |
| let teamobj = { | |
| TeamName: TeamName.toLowerCase(), | |
| Code: Code, | |
| Password: data.Password | |
| } | |
| let team = await Team.create(teamobj); | |
| successTeam = team; | |
| console.log("Team Created") | |
| let url =process.env.FRONTEND+ `/register/:${Code}` | |
| let leader = { | |
| Name: data.Name, | |
| Email: data.Email.toLowerCase(), | |
| Password: data.Password, | |
| RollNumber: data.RollNumber, | |
| PhoneNumber: data.PhoneNumber, | |
| Branch: data.Branch, | |
| Year: data.Year, | |
| DiscordID: data.DiscordId, | |
| Role: "Leader", | |
| Password: data.Password, | |
| TeamID: team._id | |
| } | |
| var err = await validator.validateUser(leader) | |
| if (err) { | |
| console.log("User Not Validated") | |
| throw new Error(err) | |
| } | |
| else { | |
| console.log("User Validated") | |
| console.log(leader) | |
| let user = await User.create(leader); | |
| successUser = user; | |
| let leaderboard = new LeaderBoard({ | |
| TeamID: team._id, | |
| TeamName: TeamName.toLowerCase(), | |
| Points: 0 | |
| }) | |
| await LeaderBoard.create(leaderboard); | |
| successLeaderBoard = leaderboard; | |
| var qresp = Team.findByIdAndUpdate(team._id, { $push: { Members: user._id } }).exec(); | |
| mail.sendMailLeader(data.Email,"Successfully Created team for Raptus!" ,TeamName, Code,data.Name); | |
| res.json({ | |
| message: "Team Registered Successfully", | |
| status: true, | |
| Code: Code, | |
| URL: url, | |
| TeamName: TeamName, | |
| Resp: qresp | |
| }); | |
| } | |
| } catch (error) { | |
| if (successTeam) | |
| Team.findByIdAndDelete(successTeam._id).exec(); | |
| if (successUser) | |
| User.findByIdAndDelete(successUser._id).exec(); | |
| if (successLeaderBoard) | |
| LeaderBoard.findByIdAndDelete(successLeaderBoard._id).exec(); | |
| if (error.code === 11000) { | |
| var message = error; | |
| if (error.keyValue.TeamName) | |
| message = "Team Name already exists" | |
| if (error.keyValue.Code) | |
| message = "Team Code already exists" | |
| if (error.keyValue.Email) | |
| message = "Email already exists" | |
| if (error.keyValue.RollNumber) | |
| message = "Roll Number already exists" | |
| if (error.keyValue.PhoneNumber) | |
| message = "Phone Number already exists" | |
| if (error.keyValue.DiscordID) | |
| message = "Discord Id already exists" | |
| res.json({ | |
| message: message | |
| }) | |
| return | |
| } | |
| // console.log(error) | |
| else | |
| res.json({ | |
| status: false, | |
| message: error.message | |
| }) | |
| } | |
| } | |
| module.exports.verifyTeam = async function verifyTeam(req, res) { | |
| try { | |
| let data = req.body | |
| let team = await Team.findOne({ Code: data.Code }) | |
| if (team) { | |
| if (team.Members.length <= 3) { | |
| res.json({ | |
| status: true, | |
| url: process.env.FRONTEND+`/register/:${team.Code}`, | |
| TeamName: team.TeamName, | |
| Code: data.Code | |
| }) | |
| } | |
| else if (team.Members.length == 4) { | |
| res.json({ | |
| status: false, | |
| message: "Team is Full !!" | |
| }); | |
| } | |
| } | |
| else { | |
| res.json({ | |
| status: false, | |
| message: "Invalid Team Code" | |
| }); | |
| } | |
| } catch (error) { | |
| res.json({ | |
| status: false, | |
| message: error.message | |
| }) | |
| } | |
| } | |
| module.exports.info = async function info(req, res) { | |
| try { | |
| let data = req.body; | |
| let team = await Team.findOne({ Code: data.code }) | |
| if (team) { | |
| if (team.Members.length <= 3) { | |
| res.json({ | |
| status: true, | |
| url: process.env.FRONTEND+`/register/:${team.Code}`, | |
| TeamName: team.TeamName, | |
| Code: data.Code | |
| }) | |
| } | |
| else if (team.Members.length == 4) { | |
| res.json({ | |
| status: false, | |
| message: "Team is Full !!" | |
| }); | |
| } | |
| } | |
| else { | |
| res.json({ | |
| status: false, | |
| message: "Invalid URL" | |
| }); | |
| } | |
| } catch (error) { | |
| res.json({ | |
| status: false, | |
| message: error.message | |
| }) | |
| } | |
| } | |
| module.exports.joinTeam = async function joinTeam(req, res) { | |
| try { | |
| let data = (req.body) | |
| let Code = req.params.id.substring(1); | |
| let team = await Team.findOne({ Code: Code }) | |
| let member = { | |
| Name: data.Name, | |
| Email: data.Email, | |
| Password: team.Password, | |
| RollNumber: data.RollNumber, | |
| PhoneNumber: data.PhoneNumber, | |
| Branch: data.Branch, | |
| Year: data.Year, | |
| DiscordID: data.DiscordId, | |
| Role: "Member", | |
| Password: team.Password, | |
| TeamID: team._id | |
| } | |
| var err = await validator.validateUser(member) | |
| //console.log(err) | |
| if (err) { | |
| console.log("User Not Validated") | |
| throw new Error(err) | |
| } | |
| else { | |
| console.log("User Validated") | |
| let user; | |
| if (team.Members.length <= 3) { | |
| user = await User.create(member); | |
| successUser = user; | |
| team.Members.push(user._id) | |
| await team.save() | |
| console.log(team) | |
| console.log(user) | |
| mail.sendMailMember(data.Email, "Successfully Joined team for Raptus!", team.TeamName, team.Code, data.Name); | |
| } | |
| else { | |
| res.json({ | |
| status: false, | |
| message: "Team is already full !!", | |
| }); | |
| } | |
| res.json({ | |
| status: true, | |
| message: "Member registered successfully", | |
| TeamName: team.TeamName, | |
| });} | |
| } catch (error) { | |
| if (successUser) | |
| User.findByIdAndDelete(successUser._id).exec(); | |
| if (error.code === 11000) { | |
| var message = error; | |
| if (error.keyValue.Email) | |
| message = "Email already exists" | |
| if (error.keyValue.RollNumber) | |
| message = "Roll Number already exists" | |
| if (error.keyValue.PhoneNumber) | |
| message = "Phone Number already exists" | |
| if (error.keyValue.DiscordID) | |
| message = "Discord Id already exists" | |
| res.json({ | |
| status: false, | |
| message: message | |
| }) | |
| return | |
| } | |
| // console.log(error) | |
| else | |
| res.json({ | |
| status: false, | |
| message: error.message | |
| }) | |
| } | |
| } | |
| module.exports.coupon = async function coupon(req, res) { | |
| try { | |
| let couponCode = crypto.randomBytes(6).toString("hex"); | |
| res.json({ | |
| status: true, | |
| Coupon: couponCode | |
| }); | |
| let couponCreated = await Coupon.create({ Coupon: couponCode }) | |
| } catch (error) { | |
| res.status(500).json({ | |
| message: error.message | |
| }) | |
| } | |
| } | |