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

// GET: friend information for a given user
route.get('/topstandard', async(req,res)=>{
    var result = []
    // Initialize result json objects
    var b = {
        "username": "",
        "exercise": "bench_press",
        "stat": -1
    }
    var s = {
        "username": "",
        "exercise": "squat",
        "stat": -1
    }
    var d = {
        "username": "",
        "exercise": "deadlift",
        "stat": -1
    }
    // Get all users with their respective standard personal records
    const temp = await Users.aggregate([
        {$project: {
            _id: 0, username: 1, 
            "deadlift": "$personal_records.deadlift",
            "squat": "$personal_records.squat",
            "bench_press": "$personal_records.bench_press"
        }
        }
    ])
    // Traverse result from query and find max value and corresponding user
    for (var i = 0; i < temp.length; i++) {
        var current = temp[i];
        if (current.bench_press != null) {
            if (current.bench_press > b["stat"]) {
                b["stat"] = current.bench_press;
                b["username"] = current.username;
            }
        }
        if (current.squat != null) {
            if (current.squat > s["stat"]) {
                s["stat"] = current.squat;
                s["username"] = current.username;
            }
        }
        if (current.deadlift != null) {
            if (current.deadlift > d["stat"]) {
                d["stat"] = current.deadlift;
                d["username"] = current.username;
            }
        }
    }
    // Add json objects to 
    result.push(d);
    result.push(s);
    result.push(b);
    res.send(result);
});


route.get('/publicRecords', async(req,res)=>{
    var deadlift_public = []
    var squat_public = []
    var bench_press_public = []
    // Get all users with their respective standard personal records
    const temp = await Users.aggregate([
        {$project: {
            _id: 0, privacy: 1,
            "deadlift": "$personal_records.deadlift",
            "squat": "$personal_records.squat",
            "bench_press": "$personal_records.bench_press"
        }
        }
    ])
    for (var i = 0; i < temp.length; i++) {
        var current = temp[i];
        if (Object.keys(current).length) {
            if (current.privacy == 2 || current.privacy == 3) {
                if (current.deadlift != undefined) {
                    console.log(current.deadlift)
                    deadlift_public.push(current.deadlift);
                }
                if (current.squat != undefined) {
                    squat_public.push(current.squat);
                }
                if (current.bench_press != undefined) {
                    bench_press_public.push(current.bench_press);
                }
            }
        }
    }
    console.log(deadlift_public)
    var result = [bench_press_public, squat_public, deadlift_public];
    res.send({public: result})
});

module.exports = route;