From 844bfdbea0761204d5112f8ba14c86f713787791 Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Mon, 6 Nov 2023 23:58:23 +0800 Subject: [PATCH 1/8] calorienbalance done --- .../command/CalorieBalanceCommand.java | 70 +++++++++++++++++++ .../java/fittrack/parser/CommandParser.java | 5 +- 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fittrack/command/CalorieBalanceCommand.java diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java new file mode 100644 index 0000000000..7c2f4ff5f9 --- /dev/null +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -0,0 +1,70 @@ +package fittrack.command; + +import fittrack.UserProfile; +import fittrack.data.Date; +import fittrack.data.Meal; +import fittrack.data.Workout; +import fittrack.parser.CommandParser; +import fittrack.parser.ParseException; + +public class CalorieBalanceCommand extends Command { + public static final String COMMAND_WORD = "caloriebalance"; + private static final String DESCRIPTION = + String.format("`%s` will take your calorie limit you set " + + "and will calculate your current calorie balance for" + + "the day using the calories you burnt during workouts" + + "and the calories you consumed during meals", COMMAND_WORD); + private static final String USAGE = String.format( + "Type `%s ` to add today's meal.\n" + + "Type `%s c/ d/` to add a meal.\n" + + "You should type in format of `yyyy-MM-dd`.", + COMMAND_WORD, COMMAND_WORD + ); + public static final String HELP = DESCRIPTION + "\n" + USAGE; + + private Date date; + + private double calorie_Balance; + public CalorieBalanceCommand(String commandLine) { + super(commandLine); + } + + @Override + public CommandResult execute() { + calorie_Balance = userProfile.getDailyCalorieLimit().value; + for(Workout workout: workoutList.getWorkoutList()) { + if(date.equals(workout.getDate())) { + calorie_Balance += workout.getCalories(); + } + } + + for(Meal meal: mealList.getMealList()) { + if(date.equals(meal.getMealDate())) { + calorie_Balance -= meal.getCalories().getValue(); + } + } + if(calorie_Balance < 0) { + return new CommandResult("You have exceeded your calorie limit on " + date + + ": " + "by" + calorie_Balance + "cals\n" + + "Try doing more exercises if you want to eat!"); + } else if (calorie_Balance == 0) { + return new CommandResult("Your calorie balance on " + date + + " is: " + calorie_Balance + "cals\n" + + "Try doing more exercise if you want to eat!"); + } else { + return new CommandResult("Your calorie balance on " + date + + " is: " + calorie_Balance + "cals\n" + + "You can try to eat more!"); + } + } + + @Override + public void setArguments(String args, CommandParser parser) throws ParseException { + date = parser.parseDate(args); + } + + @Override + protected String getHelp() { + return HELP; + } +} diff --git a/src/main/java/fittrack/parser/CommandParser.java b/src/main/java/fittrack/parser/CommandParser.java index 7eef3f9f7d..27f4eefacf 100644 --- a/src/main/java/fittrack/parser/CommandParser.java +++ b/src/main/java/fittrack/parser/CommandParser.java @@ -21,6 +21,7 @@ import fittrack.command.ViewWorkoutsCommand; import fittrack.command.FindMealCommand; import fittrack.command.FindWorkoutCommand; +import fittrack.command.CalorieBalanceCommand; import fittrack.data.Meal; import fittrack.data.Workout; import fittrack.data.Calories; @@ -45,7 +46,7 @@ public class CommandParser { "editprofile, viewprofile, " + "addmeal, deletemeal, viewmeals, " + "addworkout, deleteworkout, viewworkouts, bmi, save, " + - "checkweightrange, findmeal, findworkout"; + "checkweightrange, findmeal, findworkout, caloriebalance"; private static final Pattern COMMAND_PATTERN = Pattern.compile( "(?\\S+)(?.*)" @@ -128,6 +129,8 @@ public Command getBlankCommand(String word, String commandLine) { return new FindMealCommand(commandLine); case FindWorkoutCommand.COMMAND_WORD: return new FindWorkoutCommand(commandLine); + case CalorieBalanceCommand.COMMAND_WORD: + return new CalorieBalanceCommand(commandLine); default: return new InvalidCommand(commandLine); From a2875aad72b97338126280c174c3df208854dca7 Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Tue, 7 Nov 2023 00:20:39 +0800 Subject: [PATCH 2/8] Merge branch 'master' of https://github.com/AY2324S1-CS2113-W12-4/tp into Calories_Balance # Conflicts: # src/main/java/fittrack/parser/CommandParser.java --- .../fittrack/command/CalorieBalanceCommand.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 7c2f4ff5f9..3646f0e95c 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -34,26 +34,28 @@ public CommandResult execute() { calorie_Balance = userProfile.getDailyCalorieLimit().value; for(Workout workout: workoutList.getWorkoutList()) { if(date.equals(workout.getDate())) { - calorie_Balance += workout.getCalories(); + calorie_Balance += workout.getCalories().value; } } for(Meal meal: mealList.getMealList()) { - if(date.equals(meal.getMealDate())) { - calorie_Balance -= meal.getCalories().getValue(); + if(date.equals(meal.getDate())) { + calorie_Balance -= meal.getCalories().value; } } if(calorie_Balance < 0) { return new CommandResult("You have exceeded your calorie limit on " + date + - ": " + "by" + calorie_Balance + "cals\n" + + ": " + "by" + calorie_Balance + "kcal\n" + + "You are in a calorie surplus!\n" + "Try doing more exercises if you want to eat!"); } else if (calorie_Balance == 0) { return new CommandResult("Your calorie balance on " + date + - " is: " + calorie_Balance + "cals\n" + " is: " + calorie_Balance + "kcal\n" + "Try doing more exercise if you want to eat!"); } else { return new CommandResult("Your calorie balance on " + date + - " is: " + calorie_Balance + "cals\n" + + " is: " + calorie_Balance + "kcal\n" + + "You are in a calorie deficit!\n" + "You can try to eat more!"); } } From 15ca5da7efaa7816d5309681423e8c58cb2a2bfd Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Tue, 7 Nov 2023 00:24:08 +0800 Subject: [PATCH 3/8] no message --- src/main/java/fittrack/command/CalorieBalanceCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 3646f0e95c..4ad5d3f398 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -1,6 +1,6 @@ package fittrack.command; -import fittrack.UserProfile; + import fittrack.data.Date; import fittrack.data.Meal; import fittrack.data.Workout; From 5bd7f9ab2eb1ee4c81707349ce4604b04a2f5b7f Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Tue, 7 Nov 2023 00:27:41 +0800 Subject: [PATCH 4/8] fix some bugs for caloriebalance --- src/main/java/fittrack/command/CalorieBalanceCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 4ad5d3f398..c7dcc0be38 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -45,7 +45,7 @@ public CommandResult execute() { } if(calorie_Balance < 0) { return new CommandResult("You have exceeded your calorie limit on " + date + - ": " + "by" + calorie_Balance + "kcal\n" + + " by: " + calorie_Balance + "kcal\n" + "You are in a calorie surplus!\n" + "Try doing more exercises if you want to eat!"); } else if (calorie_Balance == 0) { From 5b4861a262f9fe56de00fb6296d0126de0930a9e Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Tue, 7 Nov 2023 00:36:35 +0800 Subject: [PATCH 5/8] addedUg for caloriebalance --- docs/UserGuide.md | 37 ++++++++++++++++++- .../command/CalorieBalanceCommand.java | 2 +- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7abcd47027..73e047ef39 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -42,6 +42,7 @@ Type `help` to see a list of commands that you will be able to use in the applic * [Viewing list of workout : `viewworkout`](#viewing-list-of-all-workouts-viewworkout) * [Find workouts by a keyword: `findworkout`](#finding-workouts-by-a-keyword-findworkout) * [Checking total calories burnt on a specific date: `caloriesburnt`](#checking-total-calories-burnt-on-a-specific-date-caloriesburnt) +* [Checking calorie balance on a specific date: `caloriesbalance`](#checking-total-calories-burnt-on-a-specific-date-caloriesburnt) ### Viewing help guide: `help` @@ -64,7 +65,7 @@ help Existing commands: help, exit, save, editprofile, viewprofile, bmi, checkrecommendedweight, addmeal, deletemeal, viewmeal, findmeal, caloriesconsumed -addworkout, deleteworkout, viewworkout, findworkout, caloriesburnt +addworkout, deleteworkout, viewworkout, findworkout, caloriesburnt, caloriebalance Type `help` or `help ` to view help. ``` @@ -354,6 +355,39 @@ caloriesburnt 2023-11-04 Total calories burnt on 2023-11-04: 230kcal ``` +### Checking calorie balance on a specific date: `caloriesbalance` +Allows user to check their calorie balance (surplus/deficit) on a specific date. + +**Format** +- `caloriesbalance ` +- You should type `` in format of `yyyy-MM-dd`. + +**Example of usage** +``` +caloriesbalance 2023-11-04 +``` + +**Expected output** + +- If the user is in a calorie surplus: +``` +You have exceeded your calorie limit on 2023-11-07 by: 4910.0kcal +You are in a calorie surplus! +Try doing more exercises if you want to eat! +``` + +- If the user is left with 0 in his calorie balance: +``` +Your calorie balance on 2023-11-07 is: 0.0kcal +Try doing more exercise if you want to eat! +``` + +- If the user is in a calorie deficit: +``` +Your calorie balance on 2023-11-07 is: 200.0kcal +You are in a calorie deficit! +You can try to eat more! +``` ## FAQ @@ -391,3 +425,4 @@ Total calories burnt on 2023-11-04: 230kcal | Viewing list of workout | `viewworkout` | | Find workouts by a keyword | `findworkout` | | Checking total calories burnt on a specific date | `caloriesburnt` | +| Checking calorie balance on a specific date | `caloriesbalance` | diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index c7dcc0be38..24c7bccb08 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -45,7 +45,7 @@ public CommandResult execute() { } if(calorie_Balance < 0) { return new CommandResult("You have exceeded your calorie limit on " + date + - " by: " + calorie_Balance + "kcal\n" + + " by: " + (calorie_Balance * -1) + "kcal\n" + "You are in a calorie surplus!\n" + "Try doing more exercises if you want to eat!"); } else if (calorie_Balance == 0) { From de104f579423c441fd101a0a9f2898888933e0db Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Mon, 13 Nov 2023 19:54:20 +0800 Subject: [PATCH 6/8] no message --- .../fittrack/command/CalorieBalanceCommand.java | 16 +++++++--------- src/main/java/fittrack/parser/CommandParser.java | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 24c7bccb08..4aa7202668 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -4,22 +4,20 @@ import fittrack.data.Date; import fittrack.data.Meal; import fittrack.data.Workout; -import fittrack.parser.CommandParser; import fittrack.parser.ParseException; public class CalorieBalanceCommand extends Command { public static final String COMMAND_WORD = "caloriebalance"; private static final String DESCRIPTION = String.format("`%s` will take your calorie limit you set " + - "and will calculate your current calorie balance for" + + "and will calculate your current calorie balance for " + "the day using the calories you burnt during workouts" + "and the calories you consumed during meals", COMMAND_WORD); - private static final String USAGE = String.format( - "Type `%s ` to add today's meal.\n" + - "Type `%s c/ d/` to add a meal.\n" + + private static final String USAGE = + String.format("Type `%s ` to see today's calorie balance.\n" + "You should type in format of `yyyy-MM-dd`.", - COMMAND_WORD, COMMAND_WORD - ); + COMMAND_WORD); + public static final String HELP = DESCRIPTION + "\n" + USAGE; private Date date; @@ -61,8 +59,8 @@ public CommandResult execute() { } @Override - public void setArguments(String args, CommandParser parser) throws ParseException { - date = parser.parseDate(args); + public void setArguments(String args) throws ParseException { + date = Date.parseDate(args); } @Override diff --git a/src/main/java/fittrack/parser/CommandParser.java b/src/main/java/fittrack/parser/CommandParser.java index dc8bfa880d..01683c349b 100644 --- a/src/main/java/fittrack/parser/CommandParser.java +++ b/src/main/java/fittrack/parser/CommandParser.java @@ -43,7 +43,7 @@ public class CommandParser { "editprofile, viewprofile, bmi, checkrecommendedweight,\n" + "addmeal, deletemeal, viewmeal, findmeal, caloriesconsumed,\n" + "addworkout, deleteworkout, viewworkout, findworkout, caloriesburnt,\n" + - "addsteps, deletesteps, viewsteps, totalsteps"; + "caloriebalance, addsteps, deletesteps, viewsteps, totalsteps"; private static final String WORD_CG = "word"; private static final String ARGS_CG = "args"; From e28074ebd064571c8b31b58cdbb596f5f323c9a7 Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Mon, 13 Nov 2023 19:56:40 +0800 Subject: [PATCH 7/8] no message --- src/main/java/fittrack/command/CalorieBalanceCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 4aa7202668..81e45515fa 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -60,7 +60,7 @@ public CommandResult execute() { @Override public void setArguments(String args) throws ParseException { - date = Date.parseDate(args); + date = Date.parseDate(args); } @Override From 1e29e1bed021bc6e86c6f34a1844947a2cdc333b Mon Sep 17 00:00:00 2001 From: NgLixuanNixon Date: Mon, 13 Nov 2023 20:02:07 +0800 Subject: [PATCH 8/8] no message --- .../command/CalorieBalanceCommand.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/fittrack/command/CalorieBalanceCommand.java b/src/main/java/fittrack/command/CalorieBalanceCommand.java index 81e45515fa..28f3075f40 100644 --- a/src/main/java/fittrack/command/CalorieBalanceCommand.java +++ b/src/main/java/fittrack/command/CalorieBalanceCommand.java @@ -22,37 +22,37 @@ public class CalorieBalanceCommand extends Command { private Date date; - private double calorie_Balance; + private double calorieBalance; public CalorieBalanceCommand(String commandLine) { super(commandLine); } @Override public CommandResult execute() { - calorie_Balance = userProfile.getDailyCalorieLimit().value; + calorieBalance = userProfile.getDailyCalorieLimit().value; for(Workout workout: workoutList.getWorkoutList()) { if(date.equals(workout.getDate())) { - calorie_Balance += workout.getCalories().value; + calorieBalance += workout.getCalories().value; } } for(Meal meal: mealList.getMealList()) { if(date.equals(meal.getDate())) { - calorie_Balance -= meal.getCalories().value; + calorieBalance -= meal.getCalories().value; } } - if(calorie_Balance < 0) { + if(calorieBalance < 0) { return new CommandResult("You have exceeded your calorie limit on " + date + - " by: " + (calorie_Balance * -1) + "kcal\n" + + " by: " + (calorieBalance * -1) + "kcal\n" + "You are in a calorie surplus!\n" + "Try doing more exercises if you want to eat!"); - } else if (calorie_Balance == 0) { + } else if (calorieBalance == 0) { return new CommandResult("Your calorie balance on " + date + - " is: " + calorie_Balance + "kcal\n" + " is: " + calorieBalance + "kcal\n" + "Try doing more exercise if you want to eat!"); } else { return new CommandResult("Your calorie balance on " + date + - " is: " + calorie_Balance + "kcal\n" + + " is: " + calorieBalance + "kcal\n" + "You are in a calorie deficit!\n" + "You can try to eat more!"); }