Skip to content
Snippets Groups Projects
Select Git revision
  • cc12e6af5ebd7ebcb486f0e521d415130803dc9f
  • develop default
  • feat/dev-test
  • feat/router
  • feat/diet-merged
  • feat/Workout
  • feat/scrap
  • feat/루틴
  • feat/HabitTracker
  • feat;식단관리
  • feat/User-merged
  • feat/User
  • feat/diet
  • feat/back
  • feat/SignIn
  • feat/dbconf
  • master
  • revert-b2deab70
  • feat/certbot
  • hotfix/nginx
  • feature/ssl
21 results

habittrackerController.js

Blame
  • habittrackerController.js 3.29 KiB
    const { minutesToSeconds, secondsToMinutes } = require('../utils/timeconvert');
    
    //habittracker구조
    const HabitTracker = require('../models/habittracker');
    //goal_weight는 habit tracker schema 안에 존재하도록
    
    const habittrackerController = {
        setGoal: async (req, res) => {
            const { goal_weekly, goal_daily, goal_daily_time, goal_weight } =
                req.body;
            //시간 변환
            const dailyTimeSeconds = minutesToSeconds(goal_daily_time);
            try {
                const newGoal = new HabitTracker({
                    user_id: req.user.user_id, //미들웨어에서  설정한 user_id 가져온다
                    goal_weekly,
                    goal_daily,
                    goal_daily_time: dailyTimeSeconds,
                    goal_weight,
                });
                await newGoal.save();
    
                res.status(201).json(newGoal);
            } catch (error) {
                console.error(error);
                res.status(500).json({
                    message: 'failed to add goal',
                    error: error.message,
                });
            }
        },
        getGoal: async (req, res) => {
            try {
                const goals = await HabitTracker.find({
                    user_id: req.user.user_id,
                });
                if (goals.length === 0) {
                    //만약 비어있다면 dummy data 반환
                    const dummyGoal = [
                        {
                            user_id: req.user.user_id,
                            goal_weekly: null,
                            goal_daily: [
                                false,
                                false,
                                false,
                                false,
                                false,
                                false,
                                false,
                            ],
                            goal_daily_time: '00:00',
                            goal_weight: null,
                        },
                    ];
                    return res.status(200).json(dummyGoal);
                }
    
                const habitTrackergoal = goals.map(goal => {
                    return {
                        user_id: req.user.user_id,
                        goal_weekly: goal.goal_weekly,
                        goal_daily: goal.goal_daily,
                        goal_daily_time: secondsToMinutes(goal.goal_daily_time),
                        goal_weight: goal.goal_weight,
                    };
                });
    
                res.status(200).json(habitTrackergoal);
            } catch (error) {
                res.status(500).json({
                    message: 'Failed to get habitTracker goals',
                    error: error.message,
                });
            }
        },
        getEveryRecords: async (req, res) => {
            const { period } = req.query.period;
            try {
                //정규식
                const regex = new RegExp(`^${period}`);
    
                //해당 월에 해당하는 운동 기록들을 가져옴
                const monthlyRecords = Record.find({
                    user_id: req.user.user_id, //미들웨어에 있는 user_id
                    date: { $regex: regex },
                });
                res.status(200).json(monthlyRecords);
            } catch (error) {
                res.status(500).json({
                    message: 'Failed to get habitTracker monthly records',
                    error: error.message,
                });
            }
        },
    };
    
    module.exports = habittrackerController;