const express = require('express'); const mongoose = require('mongoose'); const Social = require('../DB/Social') const route = express.Router(); // GET: friend information for a given user route.get('/friend/:user', async(req,res)=>{ var result = [] Social.find({username: req.params.user}, async function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else{ var doc_req = docs[0].friends for (var i = 0; i < doc_req.length; i++) { var current = {} if (doc_req[i].username != undefined) { let current_user = await Users.find({username: doc_req[i].username}); current["first_name"] = current_user[0].first_name current["last_name"] = current_user[0].last_name current["profile_picture"] = current_user[0].profile_picture current["username"] = doc_req[i].username result.push(current) } } res.send({friends_list: result}) } }); }); // Check if given user is friends with given friend route.get('/isFriend/:user/:friend', async(req, res) => { Social.find({username: req.params.user}, async function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else{ var doc_req = docs[0].friends for (var i = 0; i < doc_req.length; i++) { let current_user = doc_req[i].username; if (current_user == req.params.friend) { res.send({isFriend: true}) return } } res.send({isFriend: false}) } }); }); // GET: friend requests for a given user route.get('/friendReq/:user', async(req,res)=>{ var result = [] Social.find({username: req.params.user}, async function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else{ var doc_req = docs[0].friend_requests for (var i = 0; i < doc_req.length; i++) { var current = {} if (doc_req[i].username != undefined) { let current_user = await Users.find({username: doc_req[i].username}); current["first_name"] = current_user[0].first_name current["last_name"] = current_user[0].last_name current["profile_picture"] = current_user[0].profile_picture current["username"] = doc_req[i].username result.push(current) } } res.send({requests: result}) } }); }); // PUT: add friend to user record route.put('/friend', async(req,res)=>{ const obj = {"username": req.body.friend} Social.updateOne({'username': req.body.username}, {$push:{friends: obj}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else { res.status(200).json(docs) } }); }); // PUT: remove friend from user record route.put('/delFriend', async(req,res)=>{ const obj = {"username": req.body.friend} Social.updateOne({'username': req.body.username}, {$pull:{friends: obj}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else { res.status(200).json(docs) } }); }); // PUT: route for accepting a friend request route.put('/accFriendReq', async(req,res)=>{ const obj = {"username": req.body.friend} // Remove from friend requests Social.updateOne({'username': req.body.username}, {$pull:{friend_requests: obj}}); // Add to friends Social.updateOne({'username': req.body.username}, {$push:{friends: obj}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else { res.status(200).json(docs) } }); }); // PUT: route for rejecting a friend request route.put('/rejFriendReq', async(req,res)=>{ const obj = {"username": req.body.friend} // Remove from friend requests Social.updateOne({'username': req.body.username}, {$pull:{friend_requests: obj}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else { res.status(200).json(docs) } }); }); // PUT: route for adding a friend request route.put('/addFriendReq', async(req,res)=>{ const obj = {"username": req.body.username} // Add to friend requests Social.updateOne({'username': req.body.friend}, {$push:{friend_requests: obj}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else { res.status(200).json(docs) } }); }); // GET: search results for a given username search route.get('/searchResult/:search', async(req,res)=>{ var result = [] Users.find({username: {"$regex": req.params.search, "$options": "i"}}, function (err, docs) { if (err){ res.status(400).json({message: error.message}) } else{ for (var i = 0; i < docs.length; i++) { var current = {}; current["username"] = docs[i].username; current["profile_picture"] = docs[i].profile_picture; current["first_name"] = docs[i].first_name; current["last_name"] = docs[i].last_name; result.push(current); } res.send({search_result: result}) } }); }); module.exports = route;