BoilerLiftUp / src / Api / Friend.js
Friend.js
Raw
const express = require('express');
const mongoose = require('mongoose');
const route = express.Router();
const Post = require('../DB/Post')

// GET: Get all posts made by a user
route.get('/posts/:user', async(req,res)=>{
    Post.find({username: req.params.user}, async function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        }
        else{
            res.send({posts: docs})
        }
    });
});
// GET: Get all comments made by a user

// GET: Get average workout stats of logged in user as well as friend 
route.get('/avg/:user/:friend', async(req,res)=>{
    Users.find({$or: [
        {
          username: req.params.user
        },
        {
          username: req.params.friend
        }
      ]}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        } else {
            var user = {}
            var friend = {}
            if (docs[0].username == req.params.user) {
                user = docs[0]
                friend = docs[1]
            } else {
                user = docs[1]
                friend = docs[0]
            }
            var avg_user = user.average_stats
            var avg_friend = friend.average_stats

            var other_avg_user = user.other_avg_stats
            var other_avg_friend = friend.other_avg_stats

            var result_user = []
            var result_friend = []

            result_user.push({"ex_name": "Bench Press", "stat": avg_user["bench_press"]})
            result_user.push({"ex_name": "Squat", "stat": avg_user["squat"]})
            result_user.push({"ex_name": "Deadlift", "stat": avg_user["deadlift"]})

            result_friend.push({"ex_name": "Bench Press", "stat": avg_friend["bench_press"]})
            result_friend.push({"ex_name": "Squat", "stat": avg_friend["squat"]})
            result_friend.push({"ex_name": "Deadlift", "stat": avg_friend["deadlift"]})
        
            for (var i = 0; i < other_avg_user.length; i++) {
                var current = other_avg_user[i];
                const match_result = other_avg_friend.filter(item => item.exercise.toLowerCase() === current.exercise.toLowerCase());
                if (match_result.length > 0) {
                    result_user.push({"ex_name": current.exercise, "stat": current.stat})
                    result_friend.push({"ex_name": match_result[0].exercise, "stat": match_result[0].stat})
                }
            }
            res.send({user_avg: result_user, friend_avg: result_friend})
        }
    });
});

// GET: Get personal records workout stats of logged in user as well as friend 
route.get('/pr/:user/:friend', async(req,res)=>{
    Users.find({$or: [
        {
          username: req.params.user
        },
        {
          username: req.params.friend
        }
      ]}, function (err, docs) {
        if (err){
            res.status(400).json({message: error.message})
        } else {
            var user = {}
            var friend = {}
            if (docs[0].username == req.params.user) {
                user = docs[0]
                friend = docs[1]
            } else {
                user = docs[1]
                friend = docs[0]
            }
            var pr_user = user.personal_records
            var pr_friend = friend.personal_records

            var other_pr_user = user.other_personal_records
            var other_pr_friend = friend.other_personal_records

            var result_user = []
            var result_friend = []

            result_user.push({"ex_name": "Bench Press", "stat": pr_user["bench_press"]})
            result_user.push({"ex_name": "Squat", "stat": pr_user["squat"]})
            result_user.push({"ex_name": "Deadlift", "stat": pr_user["deadlift"]})

            result_friend.push({"ex_name": "Bench Press", "stat": pr_friend["bench_press"]})
            result_friend.push({"ex_name": "Squat", "stat": pr_friend["squat"]})
            result_friend.push({"ex_name": "Deadlift", "stat": pr_friend["deadlift"]})
        
            for (var i = 0; i < other_pr_user.length; i++) {
                var current = other_pr_user[i];
                const match_result = other_pr_friend.filter(item => item.exercise.toLowerCase() === current.exercise.toLowerCase());
                if (match_result.length > 0) {
                    result_user.push({"ex_name": current.exercise, "stat": current.stat})
                    result_friend.push({"ex_name": match_result[0].exercise, "stat": match_result[0].stat})
                }
            }
            res.send({user_pr: result_user, friend_pr: result_friend})
        }
    });
});

module.exports = route;