188 lines
6.0 KiB
JavaScript
188 lines
6.0 KiB
JavaScript
const express = require("express")
|
|
const router = express.Router()
|
|
const { requireAuth } = require('./../../middleware/authmiddleware')
|
|
const games = require('./../../model/games.js')
|
|
const User = require('./../../model/user.js')
|
|
const bodyParser = require('body-parser')
|
|
router.use(bodyParser.json())
|
|
|
|
router.post("/request-friendship", requireAuth,async (req, res) => {
|
|
const tofriend = req.body.recipientUserId
|
|
|
|
if (!tofriend){
|
|
return res.json({status:"error",error:"Recipent not sent!"})
|
|
}
|
|
|
|
const usertofriend = await User.findOne({userid: tofriend}).lean()
|
|
if (!usertofriend){
|
|
return res.json({status:"error",error:"Can't find Recipent!"})
|
|
}
|
|
|
|
|
|
if (usertofriend.friends){
|
|
const friends = usertofriend.friends.some(word => word.userid == req.userdocument.userid)
|
|
if (friends === true){
|
|
|
|
return res.json({status:"error",error:"You are already friends!"})
|
|
}
|
|
// already friends
|
|
}
|
|
if (req.userdocument.friendrequests){
|
|
// check if the other user is already requesting to friend the player so then they both want to be firends so we can interperept this as an accept request
|
|
|
|
const bothwantobefriends = req.userdocument.friendrequests.some(word => word.userid == usertofriend.userid)
|
|
if (bothwantobefriends === true){
|
|
console.log(tofriend)
|
|
User.updateOne({userid: req.userdocument.userid}, {
|
|
$push: {
|
|
friends: {userid: usertofriend.userid, username: usertofriend.username}
|
|
},
|
|
$pull: {
|
|
friendrequests: {userid: usertofriend.userid, username: usertofriend.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
|
|
})
|
|
|
|
User.updateOne({userid: tofriend}, {
|
|
$push: {
|
|
friends: {userid: req.userdocument.userid, username: req.userdocument.username}
|
|
},
|
|
$pull: {
|
|
friendrequests: {userid: req.userdocument.userid, username: req.userdocument.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
|
|
})
|
|
|
|
return res.json({status:"success",message:"You are now friends :D"})
|
|
}
|
|
|
|
}
|
|
if (usertofriend.friendrequests){
|
|
const alreadyrequested = usertofriend.friendrequests.some(word => word.userid == req.userdocument.userid)
|
|
|
|
// already friend requested
|
|
if (alreadyrequested === true){
|
|
|
|
return res.json({status:"error",error:"You already sent this request!"})
|
|
}
|
|
}
|
|
User.updateOne({userid: usertofriend.userid}, {
|
|
$push: {
|
|
friendrequests: {userid: req.userdocument.userid, username: req.userdocument.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
|
|
})
|
|
|
|
return res.json({status:"success",message:"Friend request sent!"})
|
|
|
|
|
|
|
|
})
|
|
|
|
router.post("/decline-friend-request",requireAuth,async (req, res) => {
|
|
const tounfriend = req.body.recipientUserId
|
|
//console.log(tounfriend+" nerd")
|
|
if (!tounfriend){
|
|
return res.json({status:"error",error:"Recipent not sent!"})
|
|
}
|
|
const usertofriend = await User.findOne({userid: tounfriend}).lean()
|
|
if (!usertofriend){
|
|
return res.json({status:"error",error:"Can't find Recipent!"})
|
|
}
|
|
|
|
const alreadyfriends = req.userdocument?.friends?.some(word => word.userid == tounfriend )
|
|
if (alreadyfriends === true){
|
|
// already friends with the person so they want ro remove their friend
|
|
User.updateOne({userid: tounfriend}, {
|
|
$pull: {
|
|
friends: {userid: req.userdocument.userid, username: req.userdocument.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
User.updateOne({userid: req.userdocument.userid}, {
|
|
$pull: {
|
|
friends: {userid:usertofriend.userid, username: usertofriend.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
return res.json({status:"error",error:"Unfriended friend!"})
|
|
}
|
|
|
|
|
|
|
|
//otherwise the user isn't friends but still declines the friend request
|
|
|
|
User.updateOne({userid: tounfriend}, {
|
|
$pull: {
|
|
friendrequests: {userid: req.userdocument.userid, username: req.userdocument.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
User.updateOne({userid: req.userdocument.userid}, {
|
|
$pull: {
|
|
friendrequests: {userid: usertofriend.userid, username: usertofriend.username}
|
|
}
|
|
},
|
|
function(err, doc) {
|
|
//console.log(err)
|
|
})
|
|
|
|
return res.json({status:"success",message:"Declined friend request!"})
|
|
|
|
|
|
|
|
})
|
|
|
|
router.post("/has-sent-request",requireAuth,async (req, res) => {
|
|
const tofriend = req.body.recipientUserId
|
|
|
|
if (!tofriend){
|
|
return res.json({status:"error",error:"Recipent not sent!"})
|
|
}
|
|
|
|
const usertofriend = await User.findOne({userid: tofriend}).lean()
|
|
if (!usertofriend){
|
|
return res.json({status:"error",error:"Can't find Recipent!"})
|
|
}
|
|
|
|
const friends = usertofriend?.friends?.some(word => word.userid == req.userdocument.userid)
|
|
if (friends === true){
|
|
|
|
return res.json({status:"error",error:"You are already friends!"})
|
|
}
|
|
// already friends
|
|
|
|
const alreadyrequested = usertofriend?.friendrequests?.some(word => word.userid == req.userdocument.userid)
|
|
|
|
// already friend requested
|
|
if (alreadyrequested === true){
|
|
|
|
return res.json({status:"success",message:true})
|
|
}
|
|
|
|
const bothwantobefriends = req.userdocument?.friendrequests?.some(word => word.userid == usertofriend.userid)
|
|
if (bothwantobefriends === true){
|
|
return res.json({status:"success",message:"Other user wants to be friends."})
|
|
}
|
|
|
|
return res.json({status:"success",message:false})
|
|
})
|
|
|
|
|
|
router.post('/friend-requests',requireAuth, async (req, res) => {
|
|
res.json({data: req.userdocument?.friendrequests})
|
|
});
|
|
|
|
module.exports = router |