diff --git a/README.md b/README.md
new file mode 100644
index 0000000..5216c44
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# How to run
+1 open using intellij idea
+2 run the following file src/main/java/com/example/slimfitbackend/SlimFitBackendApplication.java
diff --git a/pom.xml b/pom.xml
index c1a5e19..31feab0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,8 @@
org.projectlombok
lombok
- true
+ 1.18.8
+ provided
org.springframework.boot
@@ -44,14 +45,6 @@
org.projectlombok
lombok
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
org.pmml4s
pmml4s_3
@@ -132,6 +125,16 @@
mapstruct-processor
1.5.5.Final
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+ org.projectlombok
+ lombok-mapstruct-binding
+ 0.2.0
+
diff --git a/src/main/java/com/example/slimfitbackend/config/SecurityConfiguration.java b/src/main/java/com/example/slimfitbackend/config/SecurityConfiguration.java
index 0ec0eba..e648d38 100644
--- a/src/main/java/com/example/slimfitbackend/config/SecurityConfiguration.java
+++ b/src/main/java/com/example/slimfitbackend/config/SecurityConfiguration.java
@@ -22,19 +22,9 @@
@RequiredArgsConstructor
public class SecurityConfiguration {
- private static final String[] WHITE_LIST_URL = {"/api/v1/auth/**",
- "/v2/api-docs",
- "/v3/api-docs",
- "/v3/api-docs/**",
- "/swagger-resources",
- "/swagger-resources/**",
- "/configuration/ui",
- "/configuration/security",
- "/swagger-ui/**",
- "/webjars/**",
- "/swagger-ui.html"};
@Autowired
private JwtAuthFilter jwtAuthFilter;
+
@Autowired
private AuthenticationProvider authenticationProvider;
@@ -53,7 +43,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
.sessionCreationPolicy(STATELESS)
.and()
.authenticationProvider(authenticationProvider)
- .addFilterBefore(jwtAuthFilter,UsernamePasswordAuthenticationFilter.class);
+ .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
return http.build();
}
}
diff --git a/src/main/java/com/example/slimfitbackend/controller/AuthenticationController.java b/src/main/java/com/example/slimfitbackend/controller/AuthenticationController.java
index 3920d3d..a3808fe 100644
--- a/src/main/java/com/example/slimfitbackend/controller/AuthenticationController.java
+++ b/src/main/java/com/example/slimfitbackend/controller/AuthenticationController.java
@@ -5,8 +5,6 @@
import com.example.slimfitbackend.payload.AuthenticationResponse;
import com.example.slimfitbackend.payload.RegisterRequest;
import com.example.slimfitbackend.service.AuthenticationService;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
@@ -22,15 +20,12 @@ public class AuthenticationController {
private AuthenticationService service;
@PostMapping("/register")
- public ResponseEntity register(
- @RequestBody RegisterRequest request
- ) {
+ public ResponseEntity register(@RequestBody RegisterRequest request) {
return ResponseEntity.ok(service.register(request));
}
+
@PostMapping("/authenticate")
- public ResponseEntity authenticate(
- @RequestBody AuthenticationRequest request
- ) {
+ public ResponseEntity authenticate(@RequestBody AuthenticationRequest request) {
return ResponseEntity.ok(service.authenticate(request));
}
diff --git a/src/main/java/com/example/slimfitbackend/controller/IntakeRecordController.java b/src/main/java/com/example/slimfitbackend/controller/IntakeRecordController.java
index 6b0564c..f0aff3f 100644
--- a/src/main/java/com/example/slimfitbackend/controller/IntakeRecordController.java
+++ b/src/main/java/com/example/slimfitbackend/controller/IntakeRecordController.java
@@ -20,7 +20,7 @@ public class IntakeRecordController {
@PostMapping("/newRecord")
public IntakeRecordResponse addNewRecord(@RequestBody IntakeRecordRequest intakeRecordRequest) throws Exception {
- return intakeRecordService.saveNewIntakeRecord(intakeRecordRequest);
+ return intakeRecordService.saveNewIntakeRecord(intakeRecordRequest);
}
}
diff --git a/src/main/java/com/example/slimfitbackend/controller/ProgressController.java b/src/main/java/com/example/slimfitbackend/controller/ProgressController.java
new file mode 100644
index 0000000..5b4d693
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/controller/ProgressController.java
@@ -0,0 +1,28 @@
+package com.example.slimfitbackend.controller;
+
+import com.example.slimfitbackend.payload.UserWeightResponse;
+import com.example.slimfitbackend.service.ProgressService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/v1/progress")
+public class ProgressController {
+
+ @Autowired
+ private ProgressService progressService;
+
+ @GetMapping("/actual")
+ private List getAllUserWeight() throws Exception {
+ return progressService.getActualWeightProgress();
+ }
+
+ @GetMapping("/goal")
+ private List getUserGoal() throws Exception {
+ return progressService.getUserGoal();
+ }
+}
diff --git a/src/main/java/com/example/slimfitbackend/controller/UserActivityController.java b/src/main/java/com/example/slimfitbackend/controller/UserActivityController.java
index d905a51..2b51e04 100644
--- a/src/main/java/com/example/slimfitbackend/controller/UserActivityController.java
+++ b/src/main/java/com/example/slimfitbackend/controller/UserActivityController.java
@@ -20,12 +20,12 @@ public class UserActivityController {
private UserActivityService userActivityService;
@PostMapping("/newActivity")
- public NewActivityResponse addNewActivity(@RequestBody NewActivityRequest newActivityRequest) throws Exception {
+ public NewActivityResponse addNewActivity(@RequestBody NewActivityRequest newActivityRequest) {
return userActivityService.addNewActivity(newActivityRequest);
}
@GetMapping("/calorie")
- public PredictCalorieResponse getPredictedCal(@Valid PredictCalorieRequest predictCalorieRequest) throws Exception {
+ public PredictCalorieResponse getPredictedCal(@Valid PredictCalorieRequest predictCalorieRequest) {
return userActivityService.getPredictedCalForAct(predictCalorieRequest);
}
diff --git a/src/main/java/com/example/slimfitbackend/controller/UserController.java b/src/main/java/com/example/slimfitbackend/controller/UserController.java
index 6b277e3..03b2a44 100644
--- a/src/main/java/com/example/slimfitbackend/controller/UserController.java
+++ b/src/main/java/com/example/slimfitbackend/controller/UserController.java
@@ -1,6 +1,8 @@
package com.example.slimfitbackend.controller;
import com.example.slimfitbackend.payload.GetUserResponse;
+import com.example.slimfitbackend.payload.SaveUserWeightRequest;
+import com.example.slimfitbackend.payload.UserWeightResponse;
import com.example.slimfitbackend.payload.SaveUserRequest;
import com.example.slimfitbackend.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,8 +22,17 @@ public boolean createNewUser(@RequestBody SaveUserRequest saveUserRequest) {
}
@GetMapping("")
- private GetUserResponse getUser() throws Exception {
+ private GetUserResponse getUser() {
return userService.getUser();
}
+ @GetMapping("/weight")
+ private UserWeightResponse getUserWeight() {
+ return userService.getUserWeightResponse();
+ }
+
+ @PostMapping("/weight")
+ private UserWeightResponse saveUserWeight(@RequestBody SaveUserWeightRequest saveUserWeightRequest) throws Exception {
+ return userService.saveUserWeight(saveUserWeightRequest);
+ }
}
diff --git a/src/main/java/com/example/slimfitbackend/exceptions/CustomException.java b/src/main/java/com/example/slimfitbackend/exceptions/CustomException.java
new file mode 100644
index 0000000..03f2b35
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/exceptions/CustomException.java
@@ -0,0 +1,20 @@
+package com.example.slimfitbackend.exceptions;
+
+public class CustomException extends RuntimeException {
+
+ public CustomException() {
+ super();
+ }
+
+ public CustomException(String message) {
+ super(message);
+ }
+
+ public CustomException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public CustomException(Throwable cause) {
+ super(cause);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/slimfitbackend/exceptions/GlobalExceptionHandler.java b/src/main/java/com/example/slimfitbackend/exceptions/GlobalExceptionHandler.java
new file mode 100644
index 0000000..111c131
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/exceptions/GlobalExceptionHandler.java
@@ -0,0 +1,15 @@
+package com.example.slimfitbackend.exceptions;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+
+@ControllerAdvice
+public class GlobalExceptionHandler {
+
+ @ExceptionHandler(CustomException.class)
+ public ResponseEntity handleException(Exception e) {
+ return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/slimfitbackend/model/DailyCalorie.java b/src/main/java/com/example/slimfitbackend/model/DailyCalorie.java
index d2933a6..80e3abe 100644
--- a/src/main/java/com/example/slimfitbackend/model/DailyCalorie.java
+++ b/src/main/java/com/example/slimfitbackend/model/DailyCalorie.java
@@ -2,6 +2,8 @@
import jakarta.persistence.*;
import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import java.util.ArrayList;
@@ -9,7 +11,8 @@
import java.util.List;
@Entity
-@Data
+@Getter
+@Setter
@EnableAutoConfiguration
@Table(name = "daily_calorie")
public class DailyCalorie {
@@ -50,132 +53,4 @@ public class DailyCalorie {
private long dailyActivityActual;
private Date date;
-
- public long getDailyActivityGoal() {
- return dailyActivityGoal;
- }
-
- public void setDailyActivityGoal(long dailyActivityGoal) {
- this.dailyActivityGoal = dailyActivityGoal;
- }
-
- public long getDailyActivityActual() {
- return dailyActivityActual;
- }
-
- public void setDailyActivityActual(long dailyActivityActual) {
- this.dailyActivityActual = dailyActivityActual;
- }
-
- public long getDailyCalorieId() {
- return dailyCalorieId;
- }
-
- public void setDailyCalorieId(long dailyCalorieId) {
- this.dailyCalorieId = dailyCalorieId;
- }
-
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
-
- public List getIntakeRecords() {
- return intakeRecords;
- }
-
- public void setIntakeRecords(List intakeRecords) {
- this.intakeRecords = intakeRecords;
- }
-
- public long getBreakfastGoal() {
- return breakfastGoal;
- }
-
- public void setBreakfastGoal(long breakfastGoal) {
- this.breakfastGoal = breakfastGoal;
- }
-
- public long getBreakfastActual() {
- return breakfastActual;
- }
-
- public void setBreakfastActual(long breakfastActual) {
- this.breakfastActual = breakfastActual;
- }
-
- public long getLunchGoal() {
- return lunchGoal;
- }
-
- public void setLunchGoal(long lunchGoal) {
- this.lunchGoal = lunchGoal;
- }
-
- public long getLunchActual() {
- return lunchActual;
- }
-
- public void setLunchActual(long lunchActual) {
- this.lunchActual = lunchActual;
- }
-
- public long getDinnerGoal() {
- return dinnerGoal;
- }
-
- public void setDinnerGoal(long dinnerGoal) {
- this.dinnerGoal = dinnerGoal;
- }
-
- public long getDinnerActual() {
- return dinnerActual;
- }
-
- public void setDinnerActual(long dinnerActual) {
- this.dinnerActual = dinnerActual;
- }
-
- public long getSnackGoal() {
- return snackGoal;
- }
-
- public void setSnackGoal(long snackGoal) {
- this.snackGoal = snackGoal;
- }
-
- public long getSnackActual() {
- return snackActual;
- }
-
- public void setSnackActual(long snackActual) {
- this.snackActual = snackActual;
- }
-
- public long getDailyGoal() {
- return dailyGoal;
- }
-
- public void setDailyGoal(long dailyGoal) {
- this.dailyGoal = dailyGoal;
- }
-
- public long getDailyActual() {
- return dailyActual;
- }
-
- public void setDailyActual(long dailyActual) {
- this.dailyActual = dailyActual;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/model/IntakeRecord.java b/src/main/java/com/example/slimfitbackend/model/IntakeRecord.java
index 293a0a9..7abcf1f 100644
--- a/src/main/java/com/example/slimfitbackend/model/IntakeRecord.java
+++ b/src/main/java/com/example/slimfitbackend/model/IntakeRecord.java
@@ -2,11 +2,15 @@
import jakarta.persistence.*;
import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import javax.validation.constraints.NotNull;
+
@Entity
-@Data
-@EnableAutoConfiguration
+@Getter
+@Setter
@Table(name = "intake_record")
public class IntakeRecord {
@@ -18,59 +22,14 @@ public class IntakeRecord {
@JoinColumn(name = "daily_calorie_id")
private DailyCalorie dailyCalorie;
+ @NotNull
private long calorieCount;
private String MealName;
private String note;
+ @NotNull
private long meal;
- public long getIntakeRecordId() {
- return IntakeRecordId;
- }
-
- public void setIntakeRecordId(long intakeRecordId) {
- IntakeRecordId = intakeRecordId;
- }
-
- public DailyCalorie getDailyCalorie() {
- return dailyCalorie;
- }
-
- public void setDailyCalorie(DailyCalorie dailyCalorie) {
- this.dailyCalorie = dailyCalorie;
- }
-
- public long getCalorieCount() {
- return calorieCount;
- }
-
- public void setCalorieCount(long calorieCount) {
- this.calorieCount = calorieCount;
- }
-
- public String getMealName() {
- return MealName;
- }
-
- public void setMealName(String mealName) {
- MealName = mealName;
- }
-
- public String getNote() {
- return note;
- }
-
- public void setNote(String note) {
- this.note = note;
- }
-
- public long getMeal() {
- return meal;
- }
-
- public void setMeal(long meal) {
- this.meal = meal;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/model/Message.java b/src/main/java/com/example/slimfitbackend/model/Message.java
index 569f017..f0f00ba 100644
--- a/src/main/java/com/example/slimfitbackend/model/Message.java
+++ b/src/main/java/com/example/slimfitbackend/model/Message.java
@@ -4,12 +4,17 @@
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
import java.util.Date;
+@Getter
+@Setter
@Entity
-@Data
@EnableAutoConfiguration
@Table(name = "message")
public class Message {
@@ -18,43 +23,15 @@ public class Message {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
+ @NotNull
private String message;
+ @Past
+ @NotNull
private Date date;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/model/User.java b/src/main/java/com/example/slimfitbackend/model/User.java
index 74d6c0f..1d5765d 100644
--- a/src/main/java/com/example/slimfitbackend/model/User.java
+++ b/src/main/java/com/example/slimfitbackend/model/User.java
@@ -7,38 +7,46 @@
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
+import javax.validation.constraints.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
+@Getter
+@Setter
@Entity
-@Data
-@EnableAutoConfiguration
@Table(name = "\"user\"")
-@Builder
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
+ @Email
+ @NotNull
private String email;
+ @NotNull
private String firstName;
+ @NotNull
private String lastName;
+ @Min(20)
private int age;
+ @Past
private Date dateOfBirth;
+ @Min(0)
+ @Max(2)
+ private int gender;
+
private double height;
private double weight;
- private int gender;
-
private double bmr;
private int weeklyWeightLossGoal;
@@ -47,6 +55,12 @@ public class User implements UserDetails {
private String password;
+ private Date startDate;
+
+ private double startWeight;
+
+ private double targetWeight;
+
@Enumerated(EnumType.STRING)
private Role role;
@@ -88,110 +102,6 @@ public User(Long userId, String email, String firstName, String lastName, int ag
this.weightProgresses = weightProgresses;
}
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public Date getDateOfBirth() {
- return dateOfBirth;
- }
-
- public void setDateOfBirth(Date dateOfBirth) {
- this.dateOfBirth = dateOfBirth;
- }
-
- public double getHeight() {
- return height;
- }
-
- public void setHeight(double height) {
- this.height = height;
- }
-
- public double getWeight() {
- return weight;
- }
-
- public void setWeight(double weight) {
- this.weight = weight;
- }
-
- public int getGender() {
- return gender;
- }
-
- public void setGender(int gender) {
- this.gender = gender;
- }
-
- public double getBmr() {
- return bmr;
- }
-
- public void setBmr(double bmr) {
- this.bmr = bmr;
- }
-
- public int getWeeklyWeightLossGoal() {
- return weeklyWeightLossGoal;
- }
-
- public void setWeeklyWeightLossGoal(int weeklyWeightLossGoal) {
- this.weeklyWeightLossGoal = weeklyWeightLossGoal;
- }
-
- public List getUserActivities() {
- return userActivities;
- }
-
- public void setUserActivities(List userActivities) {
- this.userActivities = userActivities;
- }
-
- public List getWeightProgresses() {
- return weightProgresses;
- }
-
- public void setWeightProgresses(List weightProgresses) {
- this.weightProgresses = weightProgresses;
- }
-
- public int getDailyActivityGoal() {
- return dailyActivityGoal;
- }
-
- public void setDailyActivityGoal(int dailyActivityGoal) {
- this.dailyActivityGoal = dailyActivityGoal;
- }
-
@Override
public Collection extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(Role.User.name()));
diff --git a/src/main/java/com/example/slimfitbackend/model/UserActivity.java b/src/main/java/com/example/slimfitbackend/model/UserActivity.java
index efb81c8..0ed38fd 100644
--- a/src/main/java/com/example/slimfitbackend/model/UserActivity.java
+++ b/src/main/java/com/example/slimfitbackend/model/UserActivity.java
@@ -4,11 +4,13 @@
import lombok.Data;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Past;
import java.util.Date;
+
@Entity
@Data
-@EnableAutoConfiguration
@Table(name = "user_activity")
public class UserActivity {
@@ -24,67 +26,17 @@ public class UserActivity {
@JoinColumn(name = "act_id")
private ActivityType activityType;
+ @NotNull
private long calorie;
+ @NotNull
private long duration;
+ @NotNull
private long intensity;
+ @Past
+ @NotNull
private Date date;
- public Long getUserActivityId() {
- return userActivityId;
- }
-
- public void setUserActivityId(Long userActivityId) {
- this.userActivityId = userActivityId;
- }
-
- public User getUser() {
- return user;
- }
-
- public void setUser(User user) {
- this.user = user;
- }
-
- public ActivityType getActivityType() {
- return activityType;
- }
-
- public void setActivityType(ActivityType activityType) {
- this.activityType = activityType;
- }
-
- public long getCalorie() {
- return calorie;
- }
-
- public void setCalorie(long calorie) {
- this.calorie = calorie;
- }
-
- public long getDuration() {
- return duration;
- }
-
- public void setDuration(long duration) {
- this.duration = duration;
- }
-
- public long getIntensity() {
- return intensity;
- }
-
- public void setIntensity(long intensity) {
- this.intensity = intensity;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/model/WeightProgress.java b/src/main/java/com/example/slimfitbackend/model/WeightProgress.java
index 489a1e7..eff6fbe 100644
--- a/src/main/java/com/example/slimfitbackend/model/WeightProgress.java
+++ b/src/main/java/com/example/slimfitbackend/model/WeightProgress.java
@@ -2,14 +2,17 @@
import jakarta.persistence.*;
import lombok.Data;
+import lombok.NoArgsConstructor;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import java.util.Date;
+
@Entity
@Data
@EnableAutoConfiguration
@Table(name = "weight_progress")
+@NoArgsConstructor
public class WeightProgress {
@Id
@@ -24,4 +27,8 @@ public class WeightProgress {
private Date date;
+ public WeightProgress(User user, double weight) {
+ this.user = user;
+ this.weight = weight;
+ }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/AuthenticationRequest.java b/src/main/java/com/example/slimfitbackend/payload/AuthenticationRequest.java
index ddf6689..3bd0e8f 100644
--- a/src/main/java/com/example/slimfitbackend/payload/AuthenticationRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/AuthenticationRequest.java
@@ -1,29 +1,16 @@
package com.example.slimfitbackend.payload;
-import lombok.Builder;
-import lombok.Data;
+import lombok.*;
-@Data
+@Setter
+@Getter
@Builder
+@AllArgsConstructor
public class AuthenticationRequest {
String email;
- String password;
-
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getPassword() {
- return password;
- }
+ String password;
- public void setPassword(String password) {
- this.password = password;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/AuthenticationResponse.java b/src/main/java/com/example/slimfitbackend/payload/AuthenticationResponse.java
index 32e00a0..4ebcc92 100644
--- a/src/main/java/com/example/slimfitbackend/payload/AuthenticationResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/AuthenticationResponse.java
@@ -18,15 +18,4 @@ public class AuthenticationResponse {
@JsonProperty("token")
private String token;
- public AuthenticationResponse(String token) {
- this.token = token;
- }
-
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
}
\ No newline at end of file
diff --git a/src/main/java/com/example/slimfitbackend/payload/DailyCalorieResponseDto.java b/src/main/java/com/example/slimfitbackend/payload/DailyCalorieResponseDto.java
index 52c6c8c..906ccb0 100644
--- a/src/main/java/com/example/slimfitbackend/payload/DailyCalorieResponseDto.java
+++ b/src/main/java/com/example/slimfitbackend/payload/DailyCalorieResponseDto.java
@@ -6,6 +6,8 @@
import java.util.Date;
+@Setter
+@Getter
public class DailyCalorieResponseDto {
private long dailyCalorieId;
@@ -32,99 +34,9 @@ public class DailyCalorieResponseDto {
private Date date;
- public long getDailyCalorieId() {
- return dailyCalorieId;
- }
+ private double currentWeight;
- public void setDailyCalorieId(long dailyCalorieId) {
- this.dailyCalorieId = dailyCalorieId;
- }
+ private double targetWeight;
- public long getBreakfastGoal() {
- return breakfastGoal;
- }
-
- public void setBreakfastGoal(long breakfastGoal) {
- this.breakfastGoal = breakfastGoal;
- }
-
- public long getBreakfastActual() {
- return breakfastActual;
- }
-
- public void setBreakfastActual(long breakfastActual) {
- this.breakfastActual = breakfastActual;
- }
-
- public long getLunchGoal() {
- return lunchGoal;
- }
-
- public void setLunchGoal(long lunchGoal) {
- this.lunchGoal = lunchGoal;
- }
-
- public long getLunchActual() {
- return lunchActual;
- }
-
- public void setLunchActual(long lunchActual) {
- this.lunchActual = lunchActual;
- }
-
- public long getDinnerGoal() {
- return dinnerGoal;
- }
-
- public void setDinnerGoal(long dinnerGoal) {
- this.dinnerGoal = dinnerGoal;
- }
-
- public long getDinnerActual() {
- return dinnerActual;
- }
-
- public void setDinnerActual(long dinnerActual) {
- this.dinnerActual = dinnerActual;
- }
-
- public long getSnackGoal() {
- return snackGoal;
- }
-
- public void setSnackGoal(long snackGoal) {
- this.snackGoal = snackGoal;
- }
-
- public long getSnackActual() {
- return snackActual;
- }
-
- public void setSnackActual(long snackActual) {
- this.snackActual = snackActual;
- }
-
- public long getDailyGoal() {
- return dailyGoal;
- }
-
- public void setDailyGoal(long dailyGoal) {
- this.dailyGoal = dailyGoal;
- }
-
- public long getDailyActual() {
- return dailyActual;
- }
-
- public void setDailyActual(long dailyActual) {
- this.dailyActual = dailyActual;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
+ private int totalActiveMinutes;
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/FoodCalResponse.java b/src/main/java/com/example/slimfitbackend/payload/FoodCalResponse.java
index 9b1039b..9c315af 100644
--- a/src/main/java/com/example/slimfitbackend/payload/FoodCalResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/FoodCalResponse.java
@@ -1,28 +1,16 @@
package com.example.slimfitbackend.payload;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+@AllArgsConstructor
public class FoodCalResponse {
private String foodName;
- private double cal;
-
- public FoodCalResponse(String foodName, double cal) {
- this.foodName = foodName;
- this.cal = cal;
- }
- public String getFoodName() {
- return foodName;
- }
-
- public void setFoodName(String foodName) {
- this.foodName = foodName;
- }
-
- public double getCal() {
- return cal;
- }
+ private double cal;
- public void setCal(double cal) {
- this.cal = cal;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/GetActivitiesResponse.java b/src/main/java/com/example/slimfitbackend/payload/GetActivitiesResponse.java
index 471eca0..363b848 100644
--- a/src/main/java/com/example/slimfitbackend/payload/GetActivitiesResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/GetActivitiesResponse.java
@@ -4,29 +4,12 @@
import lombok.Getter;
import lombok.Setter;
+@Setter
+@Getter
+@AllArgsConstructor
public class GetActivitiesResponse {
private String label;
private long value;
- public GetActivitiesResponse(String label, long value) {
- this.label = label;
- this.value = value;
- }
-
- public String getLabel() {
- return label;
- }
-
- public void setLabel(String label) {
- this.label = label;
- }
-
- public long getValue() {
- return value;
- }
-
- public void setValue(long value) {
- this.value = value;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/GetDailyCalorieDto.java b/src/main/java/com/example/slimfitbackend/payload/GetDailyCalorieDto.java
index e15ba23..1515ef5 100644
--- a/src/main/java/com/example/slimfitbackend/payload/GetDailyCalorieDto.java
+++ b/src/main/java/com/example/slimfitbackend/payload/GetDailyCalorieDto.java
@@ -15,11 +15,4 @@ public class GetDailyCalorieDto {
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date date;
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/GetUserResponse.java b/src/main/java/com/example/slimfitbackend/payload/GetUserResponse.java
index 39004a1..cb72c4a 100644
--- a/src/main/java/com/example/slimfitbackend/payload/GetUserResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/GetUserResponse.java
@@ -1,7 +1,12 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
import java.util.Date;
+@Setter
+@Getter
public class GetUserResponse {
private Long userId;
@@ -28,99 +33,8 @@ public class GetUserResponse {
private int dailyActivityGoal;
- public Long getUserId() {
- return userId;
- }
-
- public void setUserId(Long userId) {
- this.userId = userId;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public Date getDateOfBirth() {
- return dateOfBirth;
- }
-
- public void setDateOfBirth(Date dateOfBirth) {
- this.dateOfBirth = dateOfBirth;
- }
-
- public double getHeight() {
- return height;
- }
-
- public void setHeight(double height) {
- this.height = height;
- }
-
- public double getWeight() {
- return weight;
- }
-
- public void setWeight(double weight) {
- this.weight = weight;
- }
-
- public int getGender() {
- return gender;
- }
-
- public void setGender(int gender) {
- this.gender = gender;
- }
-
- public double getBmr() {
- return bmr;
- }
-
- public void setBmr(double bmr) {
- this.bmr = bmr;
- }
-
- public int getWeeklyWeightLossGoal() {
- return weeklyWeightLossGoal;
- }
-
- public void setWeeklyWeightLossGoal(int weeklyWeightLossGoal) {
- this.weeklyWeightLossGoal = weeklyWeightLossGoal;
- }
+ private double targetWeight;
- public int getDailyActivityGoal() {
- return dailyActivityGoal;
- }
+ private Date startDate;
- public void setDailyActivityGoal(int dailyActivityGoal) {
- this.dailyActivityGoal = dailyActivityGoal;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/IntakeRecordRequest.java b/src/main/java/com/example/slimfitbackend/payload/IntakeRecordRequest.java
index 925551e..3bb5757 100644
--- a/src/main/java/com/example/slimfitbackend/payload/IntakeRecordRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/IntakeRecordRequest.java
@@ -1,7 +1,12 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
import java.util.Date;
+@Setter
+@Getter
public class IntakeRecordRequest {
private Date date;
@@ -14,43 +19,4 @@ public class IntakeRecordRequest {
private long meal;
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public long getCalorieCount() {
- return calorieCount;
- }
-
- public void setCalorieCount(long calorieCount) {
- this.calorieCount = calorieCount;
- }
-
- public String getMealName() {
- return mealName;
- }
-
- public void setMealName(String mealName) {
- this.mealName = mealName;
- }
-
- public String getNote() {
- return note;
- }
-
- public void setNote(String note) {
- this.note = note;
- }
-
- public long getMeal() {
- return meal;
- }
-
- public void setMeal(long meal) {
- this.meal = meal;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/MessageResponse.java b/src/main/java/com/example/slimfitbackend/payload/MessageResponse.java
index 9426281..764fdf0 100644
--- a/src/main/java/com/example/slimfitbackend/payload/MessageResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/MessageResponse.java
@@ -1,7 +1,12 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
import java.util.Date;
+@Setter
+@Getter
public class MessageResponse {
private Long id;
@@ -12,35 +17,4 @@ public class MessageResponse {
private String username;
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/NewActivityRequest.java b/src/main/java/com/example/slimfitbackend/payload/NewActivityRequest.java
index 7457238..a2a7d23 100644
--- a/src/main/java/com/example/slimfitbackend/payload/NewActivityRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/NewActivityRequest.java
@@ -1,9 +1,13 @@
package com.example.slimfitbackend.payload;
import com.example.slimfitbackend.model.ActivityType;
+import lombok.Getter;
+import lombok.Setter;
import java.util.Date;
+@Setter
+@Getter
public class NewActivityRequest {
private long activityType;
@@ -16,43 +20,4 @@ public class NewActivityRequest {
private Date date;
- public long getActivityType() {
- return activityType;
- }
-
- public void setActivityType(long activityType) {
- this.activityType = activityType;
- }
-
- public long getCalorie() {
- return calorie;
- }
-
- public void setCalorie(long calorie) {
- this.calorie = calorie;
- }
-
- public long getDuration() {
- return duration;
- }
-
- public void setDuration(long duration) {
- this.duration = duration;
- }
-
- public long getIntensity() {
- return intensity;
- }
-
- public void setIntensity(long intensity) {
- this.intensity = intensity;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/NewActivityResponse.java b/src/main/java/com/example/slimfitbackend/payload/NewActivityResponse.java
index a5c761e..63a6f78 100644
--- a/src/main/java/com/example/slimfitbackend/payload/NewActivityResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/NewActivityResponse.java
@@ -1,7 +1,12 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
import java.util.Date;
+@Setter
+@Getter
public class NewActivityResponse {
private long calorie;
@@ -12,35 +17,4 @@ public class NewActivityResponse {
private Date date;
- public long getCalorie() {
- return calorie;
- }
-
- public void setCalorie(long calorie) {
- this.calorie = calorie;
- }
-
- public long getDuration() {
- return duration;
- }
-
- public void setDuration(long duration) {
- this.duration = duration;
- }
-
- public long getIntensity() {
- return intensity;
- }
-
- public void setIntensity(long intensity) {
- this.intensity = intensity;
- }
-
- public Date getDate() {
- return date;
- }
-
- public void setDate(Date date) {
- this.date = date;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/PredictCalorieRequest.java b/src/main/java/com/example/slimfitbackend/payload/PredictCalorieRequest.java
index b195bd0..ba1aebd 100644
--- a/src/main/java/com/example/slimfitbackend/payload/PredictCalorieRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/PredictCalorieRequest.java
@@ -8,32 +8,7 @@
public class PredictCalorieRequest {
private int intensity;
-
private Long actId;
-
private long duration;
- public int getIntensity() {
- return intensity;
- }
-
- public void setIntensity(int intensity) {
- this.intensity = intensity;
- }
-
- public Long getActId() {
- return actId;
- }
-
- public void setActId(Long actId) {
- this.actId = actId;
- }
-
- public long getDuration() {
- return duration;
- }
-
- public void setDuration(long duration) {
- this.duration = duration;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/PredictCalorieResponse.java b/src/main/java/com/example/slimfitbackend/payload/PredictCalorieResponse.java
index 85c0018..942f92d 100644
--- a/src/main/java/com/example/slimfitbackend/payload/PredictCalorieResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/PredictCalorieResponse.java
@@ -9,11 +9,4 @@ public class PredictCalorieResponse {
private double calorie;
- public double getCalorie() {
- return calorie;
- }
-
- public void setCalorie(double calorie) {
- this.calorie = calorie;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/RegisterRequest.java b/src/main/java/com/example/slimfitbackend/payload/RegisterRequest.java
index 82b8f48..13995d6 100644
--- a/src/main/java/com/example/slimfitbackend/payload/RegisterRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/RegisterRequest.java
@@ -1,15 +1,12 @@
package com.example.slimfitbackend.payload;
import com.example.slimfitbackend.model.Role;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
-@Data
+@Setter
+@Getter
@Builder
@AllArgsConstructor
-@NoArgsConstructor
public class RegisterRequest {
private String firstname;
@@ -17,36 +14,4 @@ public class RegisterRequest {
private String email;
private String password;
- public String getFirstname() {
- return firstname;
- }
-
- public void setFirstname(String firstname) {
- this.firstname = firstname;
- }
-
- public String getLastname() {
- return lastname;
- }
-
- public void setLastname(String lastname) {
- this.lastname = lastname;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
}
\ No newline at end of file
diff --git a/src/main/java/com/example/slimfitbackend/payload/SaveUserRequest.java b/src/main/java/com/example/slimfitbackend/payload/SaveUserRequest.java
index 72edcbf..0885455 100644
--- a/src/main/java/com/example/slimfitbackend/payload/SaveUserRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/SaveUserRequest.java
@@ -5,18 +5,10 @@
import java.util.Date;
-@Getter
@Setter
+@Getter
public class SaveUserRequest {
- private String email;
-
- private String firstName;
-
- private String lastName;
-
- private int age;
-
private Date dateOfBirth;
private double height;
@@ -29,83 +21,6 @@ public class SaveUserRequest {
private int dailyActivityGoal;
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public Date getDateOfBirth() {
- return dateOfBirth;
- }
-
- public void setDateOfBirth(Date dateOfBirth) {
- this.dateOfBirth = dateOfBirth;
- }
-
- public double getHeight() {
- return height;
- }
-
- public void setHeight(double height) {
- this.height = height;
- }
-
- public double getWeight() {
- return weight;
- }
-
- public void setWeight(double weight) {
- this.weight = weight;
- }
-
- public int getGender() {
- return gender;
- }
-
- public void setGender(int gender) {
- this.gender = gender;
- }
-
- public int getWeeklyWeightLossGoal() {
- return weeklyWeightLossGoal;
- }
-
- public void setWeeklyWeightLossGoal(int weeklyWeightLossGoal) {
- this.weeklyWeightLossGoal = weeklyWeightLossGoal;
- }
-
- public int getDailyActivityGoal() {
- return dailyActivityGoal;
- }
+ private double targetWeight;
- public void setDailyActivityGoal(int dailyActivityGoal) {
- this.dailyActivityGoal = dailyActivityGoal;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/SaveUserWeightRequest.java b/src/main/java/com/example/slimfitbackend/payload/SaveUserWeightRequest.java
new file mode 100644
index 0000000..f2cfd97
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/payload/SaveUserWeightRequest.java
@@ -0,0 +1,12 @@
+package com.example.slimfitbackend.payload;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class SaveUserWeightRequest {
+
+ private double weight;
+
+}
diff --git a/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalRequest.java b/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalRequest.java
index 66bda08..f2dcb0e 100644
--- a/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalRequest.java
@@ -1,14 +1,12 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
public class SearchFoodCalRequest {
private String foodName;
- public String getFoodName() {
- return foodName;
- }
-
- public void setFoodName(String foodName) {
- this.foodName = foodName;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalResponse.java b/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalResponse.java
index f465603..4c0c992 100644
--- a/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalResponse.java
+++ b/src/main/java/com/example/slimfitbackend/payload/SearchFoodCalResponse.java
@@ -1,31 +1,16 @@
package com.example.slimfitbackend.payload;
+import lombok.Getter;
+import lombok.Setter;
+
import java.util.List;
+@Setter
+@Getter
public class SearchFoodCalResponse {
private FoodCalResponse matchFood;
private List hintedFoods;
- public SearchFoodCalResponse(FoodCalResponse matchFood, List hintedFoods) {
- this.matchFood = matchFood;
- this.hintedFoods = hintedFoods;
- }
-
- public FoodCalResponse getMatchFood() {
- return matchFood;
- }
-
- public void setMatchFood(FoodCalResponse matchFood) {
- this.matchFood = matchFood;
- }
-
- public List getHintedFoods() {
- return hintedFoods;
- }
-
- public void setHintedFoods(List hintedFoods) {
- this.hintedFoods = hintedFoods;
- }
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/SendMessageRequest.java b/src/main/java/com/example/slimfitbackend/payload/SendMessageRequest.java
index a8b70f8..470db91 100644
--- a/src/main/java/com/example/slimfitbackend/payload/SendMessageRequest.java
+++ b/src/main/java/com/example/slimfitbackend/payload/SendMessageRequest.java
@@ -1,17 +1,12 @@
package com.example.slimfitbackend.payload;
-import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+@Setter
+@Getter
public class SendMessageRequest {
private String message;
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
}
diff --git a/src/main/java/com/example/slimfitbackend/payload/UserWeightResponse.java b/src/main/java/com/example/slimfitbackend/payload/UserWeightResponse.java
new file mode 100644
index 0000000..4a0e593
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/payload/UserWeightResponse.java
@@ -0,0 +1,22 @@
+package com.example.slimfitbackend.payload;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Setter
+@Getter
+@AllArgsConstructor
+public class UserWeightResponse {
+
+ private double weight;
+
+ private Date date;
+
+ public UserWeightResponse(double weight) {
+ this.weight = weight;
+ }
+
+}
diff --git a/src/main/java/com/example/slimfitbackend/payload/common/MapStructMapper.java b/src/main/java/com/example/slimfitbackend/payload/common/MapStructMapper.java
index 56de146..dfee531 100644
--- a/src/main/java/com/example/slimfitbackend/payload/common/MapStructMapper.java
+++ b/src/main/java/com/example/slimfitbackend/payload/common/MapStructMapper.java
@@ -10,6 +10,9 @@
@Mapper(componentModel = "spring")
public interface MapStructMapper {
+ @Mapping(target = "currentWeight", ignore = true)
+ @Mapping(target = "targetWeight", ignore = true)
+ @Mapping(target = "totalActiveMinutes", ignore = true)
DailyCalorieResponseDto dailyCalorietoDailyCalorieResponseDto(DailyCalorie dailyCalorie);
User createUserRequestToUser(SaveUserRequest saveUserRequest);
diff --git a/src/main/java/com/example/slimfitbackend/repository/UserActivityRepository.java b/src/main/java/com/example/slimfitbackend/repository/UserActivityRepository.java
index 32773c7..4ee6782 100644
--- a/src/main/java/com/example/slimfitbackend/repository/UserActivityRepository.java
+++ b/src/main/java/com/example/slimfitbackend/repository/UserActivityRepository.java
@@ -1,9 +1,15 @@
package com.example.slimfitbackend.repository;
+import com.example.slimfitbackend.model.User;
import com.example.slimfitbackend.model.UserActivity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import java.util.Date;
+import java.util.List;
+
@Repository
public interface UserActivityRepository extends JpaRepository {
+
+ List findAllByDateBetweenAndUser(Date startDate, Date endDate, User user);
}
diff --git a/src/main/java/com/example/slimfitbackend/repository/WeightProgressRepository.java b/src/main/java/com/example/slimfitbackend/repository/WeightProgressRepository.java
index 8d3de36..8dbafa4 100644
--- a/src/main/java/com/example/slimfitbackend/repository/WeightProgressRepository.java
+++ b/src/main/java/com/example/slimfitbackend/repository/WeightProgressRepository.java
@@ -1,9 +1,16 @@
package com.example.slimfitbackend.repository;
+import com.example.slimfitbackend.model.User;
import com.example.slimfitbackend.model.WeightProgress;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
+import java.util.List;
+import java.util.Optional;
+
@Repository
public interface WeightProgressRepository extends JpaRepository {
+
+ List findAllByUserOrderByDate(User user);
+
}
diff --git a/src/main/java/com/example/slimfitbackend/security/JwtAuthFilter.java b/src/main/java/com/example/slimfitbackend/security/JwtAuthFilter.java
index e132c1d..5fb966d 100644
--- a/src/main/java/com/example/slimfitbackend/security/JwtAuthFilter.java
+++ b/src/main/java/com/example/slimfitbackend/security/JwtAuthFilter.java
@@ -26,6 +26,7 @@ public class JwtAuthFilter extends OncePerRequestFilter {
@Autowired
private UserDetailsService userDetailsService;
+
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
final String authHeader = request.getHeader("Authorization");
diff --git a/src/main/java/com/example/slimfitbackend/service/AuthenticationService.java b/src/main/java/com/example/slimfitbackend/service/AuthenticationService.java
index 14691a7..ba62754 100644
--- a/src/main/java/com/example/slimfitbackend/service/AuthenticationService.java
+++ b/src/main/java/com/example/slimfitbackend/service/AuthenticationService.java
@@ -1,5 +1,6 @@
package com.example.slimfitbackend.service;
+import com.example.slimfitbackend.exceptions.CustomException;
import com.example.slimfitbackend.model.User;
import com.example.slimfitbackend.payload.AuthenticationRequest;
import com.example.slimfitbackend.payload.AuthenticationResponse;
@@ -12,6 +13,8 @@
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
+import java.util.Optional;
+
@Service
@RequiredArgsConstructor
public class AuthenticationService {
@@ -30,21 +33,28 @@ public class AuthenticationService {
public AuthenticationResponse register(RegisterRequest request) {
- var user = new User(request.getEmail(),request.getFirstname(),request.getLastname(),passwordEncoder.encode(request.getPassword()));
+ var user = new User(request.getEmail(), request.getFirstname(), request.getLastname(), passwordEncoder.encode(request.getPassword()));
+ Optional optUser = userRepository.findByEmail(request.getEmail());
+ if(optUser.isPresent()){
+ throw new CustomException("User already exist");
+ }
userRepository.save(user);
var jwtToken = jwtService.generateToken(user);
return new AuthenticationResponse(jwtToken);
}
public AuthenticationResponse authenticate(AuthenticationRequest request) {
+ Optional user = userRepository.findByEmail(request.getEmail());
+ if(user.isEmpty()){
+ throw new CustomException("Invalid email or password");
+ }
+
authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
request.getEmail(),
request.getPassword()
)
);
- User user = userRepository.findByEmail(request.getEmail()).orElseThrow();
- String token = jwtService.generateToken(user);
- return new AuthenticationResponse(token);
+ return new AuthenticationResponse(jwtService.generateToken(user.get()));
}
}
diff --git a/src/main/java/com/example/slimfitbackend/service/DailyCalorieService.java b/src/main/java/com/example/slimfitbackend/service/DailyCalorieService.java
index b19a227..6ef9d39 100644
--- a/src/main/java/com/example/slimfitbackend/service/DailyCalorieService.java
+++ b/src/main/java/com/example/slimfitbackend/service/DailyCalorieService.java
@@ -2,15 +2,19 @@
import com.example.slimfitbackend.model.DailyCalorie;
import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.UserActivity;
import com.example.slimfitbackend.payload.DailyCalorieResponseDto;
import com.example.slimfitbackend.payload.GetDailyCalorieDto;
import com.example.slimfitbackend.payload.common.MapStructMapper;
import com.example.slimfitbackend.repository.DailyCalorieRepository;
+import com.example.slimfitbackend.repository.UserActivityRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
+import java.util.List;
import java.util.Optional;
+import java.util.Calendar;
@Service
public class DailyCalorieService {
@@ -24,11 +28,10 @@ public class DailyCalorieService {
@Autowired
private MapStructMapper mapStructMapper;
- private int calorieDeficitPerToday(int weightLossPerWeekInG) {
+ @Autowired
+ private UserActivityRepository userActivityRepository;
- if (weightLossPerWeekInG > 500) {
- // throw exception not recommended
- }
+ private int calorieDeficitPerToday(int weightLossPerWeekInG) {
double weightLossPerWeekInKG = (double) weightLossPerWeekInG / 1000;
@@ -64,10 +67,42 @@ public DailyCalorieResponseDto getDailyCalorieResponse(GetDailyCalorieDto getDai
if (optDailyCal.isEmpty()) {
dailyCalorie = createNewDailyCalorie(user, getDailyCalorieDto.getDate());
dailyCalorieRepository.save(dailyCalorie);
- return mapStructMapper.dailyCalorietoDailyCalorieResponseDto(dailyCalorie);
+ DailyCalorieResponseDto returnObject = mapStructMapper.dailyCalorietoDailyCalorieResponseDto(dailyCalorie);
+ returnObject.setCurrentWeight(userService.getUserWeight().getWeight());
+ returnObject.setTargetWeight(user.getTargetWeight());
+ returnObject.setTotalActiveMinutes(getDailyActiveMinutes(getDailyCalorieDto.getDate(),user));
+ return returnObject;
}
// get from db comparing date if not found create
- return mapStructMapper.dailyCalorietoDailyCalorieResponseDto(optDailyCal.get());
+ DailyCalorieResponseDto returnObject = mapStructMapper.dailyCalorietoDailyCalorieResponseDto(optDailyCal.get());
+ returnObject.setCurrentWeight(userService.getUserWeight().getWeight());
+ returnObject.setTargetWeight(user.getTargetWeight());
+ returnObject.setTotalActiveMinutes(getDailyActiveMinutes(getDailyCalorieDto.getDate(),user));
+ return returnObject;
+ }
+
+ public int getDailyActiveMinutes(Date currentDate, User user){
+
+ // Set the time to midnight represent the start of the day
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(currentDate);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ Date startDate = calendar.getTime();
+
+ // Set the time to just before midnight to represent the end of the day
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ Date endDate = calendar.getTime();
+
+ List todayActivities = userActivityRepository.findAllByDateBetweenAndUser(startDate,endDate,user);
+ int totalMinutes = 0;
+ for (UserActivity todayActivity : todayActivities) {
+ totalMinutes += (int) todayActivity.getDuration();
+ }
+ return totalMinutes;
}
public DailyCalorie getDailyCalorie(User user, Date date) {
@@ -86,8 +121,6 @@ private DailyCalorie createNewDailyCalorie(User user, Date date) {
devideCaloriesForMeals(dailyCalorieIntake, dailyCalorie);
dailyCalorie.setDailyActivityActual(0);
dailyCalorie.setDailyActivityGoal(user.getDailyActivityGoal());
- dailyCalorie.setDailyActual(0);
- dailyCalorie.setDailyGoal(user.getDailyActivityGoal());
return dailyCalorie;
}
}
diff --git a/src/main/java/com/example/slimfitbackend/service/IntakeRecordService.java b/src/main/java/com/example/slimfitbackend/service/IntakeRecordService.java
index 5807124..22e5b21 100644
--- a/src/main/java/com/example/slimfitbackend/service/IntakeRecordService.java
+++ b/src/main/java/com/example/slimfitbackend/service/IntakeRecordService.java
@@ -5,10 +5,7 @@
import com.example.slimfitbackend.model.User;
import com.example.slimfitbackend.payload.*;
import com.example.slimfitbackend.payload.common.MapStructMapper;
-import com.example.slimfitbackend.repository.ActivityTypeRepository;
-import com.example.slimfitbackend.repository.DailyCalorieRepository;
import com.example.slimfitbackend.repository.IntakeRecordRepository;
-import com.fasterxml.jackson.core.JsonProcessingException;
import org.json.JSONArray;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -17,7 +14,7 @@
import org.json.JSONObject;
import java.util.ArrayList;
-import java.util.Optional;
+import java.util.Objects;
@Service
public class IntakeRecordService {
@@ -34,44 +31,64 @@ public class IntakeRecordService {
@Autowired
private IntakeRecordRepository intakeRecordRepository;
- public SearchFoodCalResponse getCalorieForFood(SearchFoodCalRequest searchFoodCalRequest) throws JsonProcessingException {
- String apiUrl = "https://api.edamam.com/api/food-database/parser?nutrition-type=logging&app_id=07d50733&app_key=80fcb49b500737827a9a23f7049653b9&ingr=" + searchFoodCalRequest.getFoodName();
- RestTemplate restTemplate = new RestTemplate();
- ResponseEntity response = restTemplate.getForEntity(apiUrl, String.class);
- JSONObject json = new JSONObject(response);
- Object json1 = json.get("body");
- JSONObject body = new JSONObject(json1.toString());
- Object parsed = body.get("parsed");
- JSONArray jsonArray = new JSONArray(parsed.toString());
- JSONObject jsonObject = jsonArray.getJSONObject(0);
- JSONObject foodObject = jsonObject.getJSONObject("food");
- JSONObject nutrientsObject = foodObject.getJSONObject("nutrients");
- String name = foodObject.getString("label");
- double enercKcal = nutrientsObject.getDouble("ENERC_KCAL");
-
- Object hints = body.get("hints");
- JSONArray hintsJsonArray = new JSONArray(hints.toString());
-
- ArrayList foodCalResponses = new ArrayList<>();
-
- for (int i = 0; i < hintsJsonArray.length(); i++) {
- JSONObject hintJsonObject = hintsJsonArray.getJSONObject(0);
- JSONObject hintFoodObject = hintJsonObject.getJSONObject("food");
- JSONObject hintNutrientsObject = hintFoodObject.getJSONObject("nutrients");
-
- foodCalResponses.add(new FoodCalResponse(hintFoodObject.getString("label"), hintNutrientsObject.getDouble("ENERC_KCAL")));
+ public SearchFoodCalResponse getCalorieForFood(SearchFoodCalRequest searchFoodCalRequest) {
+ try{
+ String apiUrl = "https://api.edamam.com/api/food-database/parser?nutrition-type=logging&app_id=f0a49c1a&app_key=e34b74716a82c88c26a7353d340b90b4&ingr=" + searchFoodCalRequest.getFoodName();
+ RestTemplate restTemplate = new RestTemplate();
+ ResponseEntity response = restTemplate.getForEntity(apiUrl, String.class);
+ JSONObject json = new JSONObject(response);
+ Object json1 = json.get("body");
+ JSONObject body = new JSONObject(json1.toString());
+ Object parsed = body.get("parsed");
+ JSONArray jsonArray = new JSONArray(parsed.toString());
+
+ SearchFoodCalResponse searchFoodCalResponse = new SearchFoodCalResponse();
+ try {
+ JSONObject jsonObject = jsonArray.getJSONObject(0);
+ JSONObject foodObject = jsonObject.getJSONObject("food");
+ JSONObject nutrientsObject = foodObject.getJSONObject("nutrients");
+ String name = foodObject.getString("label");
+ double enercKcal = nutrientsObject.getDouble("ENERC_KCAL");
+ searchFoodCalResponse.setMatchFood(new FoodCalResponse(name, enercKcal));
+ } catch (Exception ignored) {
+ searchFoodCalResponse.setMatchFood(null);
+ }
+
+ Object hints = body.get("hints");
+ JSONArray hintsJsonArray = new JSONArray(hints.toString());
+
+ ArrayList foodCalResponses = new ArrayList<>();
+
+ for (int i = 0; i < hintsJsonArray.length(); i++) {
+ JSONObject hintJsonObject = hintsJsonArray.getJSONObject(0);
+ JSONObject hintFoodObject = hintJsonObject.getJSONObject("food");
+ JSONObject hintNutrientsObject = hintFoodObject.getJSONObject("nutrients");
+ String foodLabel = hintFoodObject.getString("label");
+ if (!doesFoodAlreadyExist(foodCalResponses, foodLabel))
+ foodCalResponses.add(new FoodCalResponse(foodLabel, hintNutrientsObject.getDouble("ENERC_KCAL")));
+ }
+ searchFoodCalResponse.setHintedFoods(foodCalResponses);
+ return searchFoodCalResponse;
+ }catch (Exception e){
+ e.printStackTrace();
}
+ return new SearchFoodCalResponse();
+ }
- return new SearchFoodCalResponse(new FoodCalResponse(name, enercKcal), foodCalResponses);
+ private boolean doesFoodAlreadyExist(ArrayList foodCalResponses, String name) {
+ for (FoodCalResponse foodCalResponse : foodCalResponses) {
+ if (Objects.equals(foodCalResponse.getFoodName(), name))
+ return true;
+ }
+ return false;
}
public IntakeRecordResponse saveNewIntakeRecord(IntakeRecordRequest intakeRecordRequest) throws Exception {
-
+ User user = userService.getCurrentUser();
IntakeRecord intakeRecord = new IntakeRecord();
intakeRecord.setCalorieCount(intakeRecordRequest.getCalorieCount());
intakeRecord.setMealName(intakeRecordRequest.getMealName());
intakeRecord.setNote(intakeRecordRequest.getNote());
- User user = userService.getCurrentUser();
DailyCalorie dailyCal = dailyCalorieService.getDailyCalorie(user, intakeRecordRequest.getDate());
switch ((int) intakeRecordRequest.getMeal()) {
@@ -83,7 +100,7 @@ public IntakeRecordResponse saveNewIntakeRecord(IntakeRecordRequest intakeRecord
default -> {
}
}
-
+ dailyCal.setDailyActual(dailyCal.getDailyActual() + intakeRecordRequest.getCalorieCount());
intakeRecord.setDailyCalorie(dailyCal);
intakeRecord = intakeRecordRepository.save(intakeRecord);
return mapStructMapper.itakeRecordToIntakeRecordResponse(intakeRecord);
diff --git a/src/main/java/com/example/slimfitbackend/service/MLModelService.java b/src/main/java/com/example/slimfitbackend/service/MLModelService.java
index bf93965..ced34bb 100644
--- a/src/main/java/com/example/slimfitbackend/service/MLModelService.java
+++ b/src/main/java/com/example/slimfitbackend/service/MLModelService.java
@@ -22,7 +22,7 @@ private static Object getRegressionValue(Map values) {
public static double getCalorie(double gender, double age, double height, double weight, double duration, double exercise_type_num, double intensity) {
Map values = new HashMap<>();
- values.put("Gender",gender);
+ values.put("Gender", gender);
values.put("Age", age);
values.put("Height", height);
values.put("Weight", weight);
diff --git a/src/main/java/com/example/slimfitbackend/service/MyUserDetailsService.java b/src/main/java/com/example/slimfitbackend/service/MyUserDetailsService.java
index 297547f..cd93834 100644
--- a/src/main/java/com/example/slimfitbackend/service/MyUserDetailsService.java
+++ b/src/main/java/com/example/slimfitbackend/service/MyUserDetailsService.java
@@ -24,6 +24,6 @@ public UserDetails loadUserByUsername(String username) throws UsernameNotFoundEx
if (optionalUser.isPresent()){
return new org.springframework.security.core.userdetails.User(optionalUser.get().getEmail(),"foo",new ArrayList<>());
}
- return null;
+ throw new UsernameNotFoundException("User not found");
}
}
diff --git a/src/main/java/com/example/slimfitbackend/service/ProgressService.java b/src/main/java/com/example/slimfitbackend/service/ProgressService.java
new file mode 100644
index 0000000..a53db2c
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/service/ProgressService.java
@@ -0,0 +1,68 @@
+package com.example.slimfitbackend.service;
+
+
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.WeightProgress;
+import com.example.slimfitbackend.payload.UserWeightResponse;
+import com.example.slimfitbackend.repository.WeightProgressRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.time.LocalDate;
+import java.time.ZoneId;
+
+@Service
+public class ProgressService {
+
+ @Autowired
+ private WeightProgressRepository weightProgressRepository;
+
+ @Autowired
+ private UserService userService;
+
+ public List getActualWeightProgress() throws Exception {
+ User user = userService.getCurrentUser();
+ List weightProgresses = weightProgressRepository.findAllByUserOrderByDate(user);
+ List userWeightResponses = new ArrayList<>();
+ for (WeightProgress weightProgress : weightProgresses) {
+ userWeightResponses.add(new UserWeightResponse(weightProgress.getWeight(), weightProgress.getDate()));
+ }
+ if(userWeightResponses.size()>5){
+ return userWeightResponses.subList(userWeightResponses.size() - 5, userWeightResponses.size());
+ }
+ return userWeightResponses;
+ }
+
+ public List getUserGoal() throws Exception {
+ User user = userService.getCurrentUser();
+ List dateList = generateDateListPerWeek(user.getStartDate(), new Date());
+ List userWeightResponses = new ArrayList<>();
+ double currentWeight = user.getStartWeight();
+ for (Date date : dateList) {
+ userWeightResponses.add(new UserWeightResponse(currentWeight, date));
+ currentWeight = ((currentWeight * 1000) - user.getWeeklyWeightLossGoal()) / 1000;
+ }
+ return userWeightResponses;
+ }
+
+ public static List generateDateListPerWeek(Date startDate, Date endDate) {
+ List dateList = new ArrayList<>();
+
+ // Convert input Date objects to LocalDate
+ LocalDate startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+
+ LocalDate currentDate = startLocalDate;
+
+ while (currentDate.isBefore(endLocalDate)) {
+ // Convert LocalDate back to Date
+ dateList.add(Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+ currentDate = currentDate.plusWeeks(1);
+ }
+
+ return dateList;
+ }
+}
diff --git a/src/main/java/com/example/slimfitbackend/service/UserActivityService.java b/src/main/java/com/example/slimfitbackend/service/UserActivityService.java
index 6faa4ae..a931ed4 100644
--- a/src/main/java/com/example/slimfitbackend/service/UserActivityService.java
+++ b/src/main/java/com/example/slimfitbackend/service/UserActivityService.java
@@ -42,7 +42,7 @@ public class UserActivityService {
private MapStructMapper mapStructMapper;
- public NewActivityResponse addNewActivity(NewActivityRequest newActivityRequest) throws Exception {
+ public NewActivityResponse addNewActivity(NewActivityRequest newActivityRequest) {
UserActivity userActivity = new UserActivity();
User user = userService.getCurrentUser();
userActivity.setUser(user);
@@ -54,15 +54,15 @@ public NewActivityResponse addNewActivity(NewActivityRequest newActivityRequest)
activityType.ifPresent(userActivity::setActivityType);
userActivityRepository.save(userActivity);
- DailyCalorie daily = dailyCalorieService.getDailyCalorie(user,newActivityRequest.getDate());
+ DailyCalorie daily = dailyCalorieService.getDailyCalorie(user, newActivityRequest.getDate());
daily.setDailyActivityActual(daily.getDailyActivityActual() + newActivityRequest.getCalorie());
- daily.setDailyActual(daily.getDailyActual() + newActivityRequest.getCalorie());
+ daily.setDailyActual(daily.getDailyActual() - newActivityRequest.getCalorie());
dailyCalorieRepository.save(daily);
return mapStructMapper.userActivityToNewActivityResponse(userActivity);
}
- public PredictCalorieResponse getPredictedCalForAct(PredictCalorieRequest predictCalorieRequest) throws Exception {
+ public PredictCalorieResponse getPredictedCalForAct(PredictCalorieRequest predictCalorieRequest) {
User user = userService.getCurrentUser();
double results = MLModelService.getCalorie(user.getGender(), user.getAge(), user.getHeight(), user.getWeight(), predictCalorieRequest.getDuration(), predictCalorieRequest.getActId(), predictCalorieRequest.getIntensity());
PredictCalorieResponse predictCalorieResponse = new PredictCalorieResponse();
@@ -70,11 +70,11 @@ public PredictCalorieResponse getPredictedCalForAct(PredictCalorieRequest predic
return predictCalorieResponse;
}
- public List getActivities(){
+ public List getActivities() {
List activities = activityTypeRepository.findAll();
List getActivitiesResponseList = new ArrayList<>();
for (ActivityType activity : activities) {
- getActivitiesResponseList.add(new GetActivitiesResponse(activity.getName(),activity.getActId()));
+ getActivitiesResponseList.add(new GetActivitiesResponse(activity.getName(), activity.getActId()));
}
return getActivitiesResponseList;
}
diff --git a/src/main/java/com/example/slimfitbackend/service/UserService.java b/src/main/java/com/example/slimfitbackend/service/UserService.java
index 94965ae..4a7d86a 100644
--- a/src/main/java/com/example/slimfitbackend/service/UserService.java
+++ b/src/main/java/com/example/slimfitbackend/service/UserService.java
@@ -1,17 +1,26 @@
package com.example.slimfitbackend.service;
+import com.example.slimfitbackend.exceptions.CustomException;
import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.WeightProgress;
import com.example.slimfitbackend.payload.GetUserResponse;
+import com.example.slimfitbackend.payload.SaveUserWeightRequest;
+import com.example.slimfitbackend.payload.UserWeightResponse;
import com.example.slimfitbackend.payload.SaveUserRequest;
import com.example.slimfitbackend.payload.common.MapStructMapper;
import com.example.slimfitbackend.repository.UserRepository;
+import com.example.slimfitbackend.repository.WeightProgressRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
+import java.util.List;
import java.util.Optional;
+import static com.example.slimfitbackend.util.Util.yearCountBetweenDates;
+
@Service
public class UserService {
@@ -21,33 +30,33 @@ public class UserService {
@Autowired
private UserRepository userRepository;
+ @Autowired
+ private WeightProgressRepository weightProgressRepository;
+
@Transactional
public boolean createNewUser(SaveUserRequest saveUserRequest) {
try {
- Optional optUser = userRepository.findByEmail(saveUserRequest.getEmail());
-
- if (optUser.isPresent()) {
- User user = optUser.get();
- user.setFirstName(saveUserRequest.getFirstName());
- user.setLastName(saveUserRequest.getLastName());
- user.setAge(saveUserRequest.getAge());
- user.setDateOfBirth(saveUserRequest.getDateOfBirth());
- user.setHeight(saveUserRequest.getHeight());
- user.setWeight(saveUserRequest.getWeight());
- user.setGender(saveUserRequest.getGender());
-
- //1 == male 2 == female
- if (user.getGender() == 1) {
- user.setBmr(88.362 + (13.397 * user.getWeight()) + (4.799 * user.getHeight()) - (5.677 * user.getAge()));
- } else if (user.getGender() == 2) {
- user.setBmr(447.593 + (9.247 * user.getWeight()) + (3.098 * user.getHeight()) - (4.330 * user.getAge()));
- }
- user.setWeeklyWeightLossGoal(saveUserRequest.getWeeklyWeightLossGoal());
-
- user.setDailyActivityGoal(saveUserRequest.getDailyActivityGoal());
- userRepository.save(user);
+ User user = getCurrentUser();
+ user.setAge(yearCountBetweenDates(saveUserRequest.getDateOfBirth(), new Date()));
+ user.setDateOfBirth(saveUserRequest.getDateOfBirth());
+ user.setHeight(saveUserRequest.getHeight());
+ user.setWeight(saveUserRequest.getWeight());
+ user.setStartWeight(saveUserRequest.getWeight());
+ user.setGender(saveUserRequest.getGender());
+ user.setStartDate(new Date());
+ user.setTargetWeight(saveUserRequest.getTargetWeight());
+
+ //1 == male 2 == female
+ if (user.getGender() == 1) {
+ user.setBmr(88.362 + (13.397 * user.getWeight()) + (4.799 * user.getHeight()) - (5.677 * user.getAge()));
+ } else if (user.getGender() == 2) {
+ user.setBmr(447.593 + (9.247 * user.getWeight()) + (3.098 * user.getHeight()) - (4.330 * user.getAge()));
}
+ user.setWeeklyWeightLossGoal(saveUserRequest.getWeeklyWeightLossGoal());
+
+ user.setDailyActivityGoal(saveUserRequest.getDailyActivityGoal());
+ userRepository.save(user);
return true;
} catch (Exception e) {
@@ -55,56 +64,42 @@ public boolean createNewUser(SaveUserRequest saveUserRequest) {
}
}
- public User getCurrentUser() throws Exception {
+ public User getCurrentUser() {
String email = SecurityContextHolder.getContext().getAuthentication().getName();
Optional optUser = userRepository.findByEmail(email);
- if (optUser.isPresent()){
+ if (optUser.isPresent()) {
return optUser.get();
} else {
- throw new Exception();
+ throw new CustomException("User do not exist");
}
}
- public GetUserResponse getUser() throws Exception {
+ public GetUserResponse getUser() {
return mapStructMapper.userToGetUserResponse(getCurrentUser());
}
-}
-
-
-// User user = optUser.get();
-// if(saveUserRequest.getFirstName() != null){
-// user.setFirstName(saveUserRequest.getFirstName());
-// }
-// if(saveUserRequest.getLastName() != null){
-// user.setLastName(saveUserRequest.getLastName());
-// }
-// if(saveUserRequest.getAge() != 0){
-// user.setAge(saveUserRequest.getAge());
-// }
-// if(saveUserRequest.getDateOfBirth() != null){
-// user.setDateOfBirth(saveUserRequest.getDateOfBirth());
-// }
-// if(saveUserRequest.getHeight() != 0){
-// user.setHeight(saveUserRequest.getHeight());
-// }
-// if(saveUserRequest.getWeight() != 0){
-// user.setWeight(saveUserRequest.getWeight());
-// }
-// if(saveUserRequest.getGender() != 0){
-// user.setGender(saveUserRequest.getGender());
-//
-// //1 == male 2 == female
-// if(user.getGender() == 1){
-// user.setBmr(88.362 + (13.397 * user.getWeight()) + (4.799 * user.getHeight()) - (5.677 * user.getAge()));
-// } else if (user.getGender() == 2){
-// user.setBmr(447.593 + (9.247 * user.getWeight()) + (3.098 * user.getHeight()) - (4.330 * user.getAge()));
-// }
-// }
-// if(saveUserRequest.getWeeklyWeightLossGoal() != 0){
-// user.setWeeklyWeightLossGoal(saveUserRequest.getWeeklyWeightLossGoal());
-// }
-//
-// user.setDailyActivityGoal(saveUserRequest.getDailyActivityGoal());
-// userRepository.save(user);
\ No newline at end of file
+
+ public UserWeightResponse getUserWeightResponse() {
+ return new UserWeightResponse(getUserWeight().getWeight());
+ }
+
+ public WeightProgress getUserWeight(){
+ User user = getCurrentUser();
+ List userWeightLogs = weightProgressRepository.findAllByUserOrderByDate(user);
+ if(!userWeightLogs.isEmpty()){
+ return userWeightLogs.get(userWeightLogs.size() - 1);
+ }
+ return new WeightProgress(user, user.getWeight());
+ }
+
+ public UserWeightResponse saveUserWeight(SaveUserWeightRequest saveUserWeightRequest) throws Exception {
+ WeightProgress weightProgress = new WeightProgress();
+ weightProgress.setWeight(saveUserWeightRequest.getWeight());
+ weightProgress.setDate(new Date());
+ weightProgress.setUser(getCurrentUser());
+ weightProgressRepository.save(weightProgress);
+ return new UserWeightResponse(weightProgress.getWeight());
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/slimfitbackend/util/Util.java b/src/main/java/com/example/slimfitbackend/util/Util.java
new file mode 100644
index 0000000..8773745
--- /dev/null
+++ b/src/main/java/com/example/slimfitbackend/util/Util.java
@@ -0,0 +1,16 @@
+package com.example.slimfitbackend.util;
+
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.Date;
+
+public class Util {
+
+ public static int yearCountBetweenDates(Date startDate, Date endDate){
+ LocalDate localDate1 = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ LocalDate localDate2 = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ Period period = Period.between(localDate1, localDate2);
+ return period.getYears();
+ }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index b057688..ee6b8b2 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -2,5 +2,6 @@ spring.datasource.url=jdbc:mysql://localhost:3306/slimfit
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update
+logging.level.root=DEBUG
diff --git a/src/test/java/com/example/slimfitbackend/service/AuthenticationServiceTest.java b/src/test/java/com/example/slimfitbackend/service/AuthenticationServiceTest.java
new file mode 100644
index 0000000..df01759
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/AuthenticationServiceTest.java
@@ -0,0 +1,71 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.payload.AuthenticationRequest;
+import com.example.slimfitbackend.payload.AuthenticationResponse;
+import com.example.slimfitbackend.payload.RegisterRequest;
+import com.example.slimfitbackend.repository.UserRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.crypto.password.PasswordEncoder;
+
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+public class AuthenticationServiceTest {
+
+ @Mock
+ private UserRepository userRepository;
+
+ @Mock
+ private JwtService jwtService;
+
+ @Mock
+ private AuthenticationManager authenticationManager;
+
+ @Mock
+ private PasswordEncoder passwordEncoder;
+
+ @InjectMocks
+ private AuthenticationService authenticationService;
+
+ @BeforeEach
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testRegister() {
+ RegisterRequest request = new RegisterRequest("test@example.com", "John", "Doe", "password");
+ User user = new User(request.getEmail(), request.getFirstname(), request.getLastname(), "encoded_password");
+
+ when(passwordEncoder.encode("password")).thenReturn("encoded_password");
+ when(userRepository.save(any(User.class))).thenReturn(user);
+ when(jwtService.generateToken(any(User.class))).thenReturn("jwt_token");
+
+ AuthenticationResponse response = authenticationService.register(request);
+
+ assertEquals("jwt_token", response.getToken());
+ verify(userRepository, times(1)).save(any(User.class));
+ }
+
+ @Test
+ public void testAuthenticate() {
+ AuthenticationRequest request = new AuthenticationRequest("test@example.com", "password");
+ User user = new User("test@example.com", "John", "Doe", "encoded_password");
+
+ when(userRepository.findByEmail("test@example.com")).thenReturn(Optional.of(user));
+ when(jwtService.generateToken(any(User.class))).thenReturn("jwt_token");
+
+ AuthenticationResponse response = authenticationService.authenticate(request);
+
+ assertEquals("jwt_token", response.getToken());
+ verify(authenticationManager, times(1)).authenticate(any());
+ }
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/DailyCalorieServiceTest.java b/src/test/java/com/example/slimfitbackend/service/DailyCalorieServiceTest.java
new file mode 100644
index 0000000..ce559b4
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/DailyCalorieServiceTest.java
@@ -0,0 +1,91 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.DailyCalorie;
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.WeightProgress;
+import com.example.slimfitbackend.payload.DailyCalorieResponseDto;
+import com.example.slimfitbackend.payload.GetDailyCalorieDto;
+import com.example.slimfitbackend.payload.common.MapStructMapper;
+import com.example.slimfitbackend.repository.DailyCalorieRepository;
+import com.example.slimfitbackend.repository.UserActivityRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+class DailyCalorieServiceTest {
+
+ @Mock
+ private DailyCalorieRepository dailyCalorieRepository;
+
+ @Mock
+ private UserService userService;
+
+ @Mock
+ private MapStructMapper mapStructMapper;
+
+ @Mock
+ private UserActivityRepository userActivityRepository;
+
+ @InjectMocks
+ private DailyCalorieService dailyCalorieService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ void testGetDailyCalorieResponse() throws Exception {
+ // Mocking user
+ User user = new User();
+ user.setUserId(1L);
+ user.setBmr(2000);
+ user.setDailyActivityGoal(500);
+ user.setWeeklyWeightLossGoal(1000);
+
+ // Mocking current date
+ Date currentDate = new Date();
+
+ // Mocking user service to return current user
+ when(userService.getCurrentUser()).thenReturn(user);
+
+ // Mocking daily calorie response DTO
+ DailyCalorieResponseDto mockedResponseDto = new DailyCalorieResponseDto();
+ mockedResponseDto.setDailyGoal(1800);
+ mockedResponseDto.setCurrentWeight(70);
+ mockedResponseDto.setTargetWeight(65);
+ mockedResponseDto.setTotalActiveMinutes(60);
+
+ WeightProgress weightProgress = new WeightProgress();
+ weightProgress.setWeight(10.0);
+
+ // Mocking daily calorie repository
+ when(dailyCalorieRepository.findByDateAndUser(any(Date.class), eq(user))).thenReturn(Optional.empty());
+ DailyCalorie newDailyCalorie = new DailyCalorie();
+ when(dailyCalorieRepository.save(any(DailyCalorie.class))).thenReturn(newDailyCalorie);
+ when(mapStructMapper.dailyCalorietoDailyCalorieResponseDto(any())).thenReturn(mockedResponseDto);
+ when(userService.getUserWeight()).thenReturn(weightProgress);
+
+ // Test
+ GetDailyCalorieDto getDailyCalorieDto = new GetDailyCalorieDto();
+ getDailyCalorieDto.setDate(currentDate);
+ DailyCalorieResponseDto responseDto = dailyCalorieService.getDailyCalorieResponse(getDailyCalorieDto);
+
+ mockedResponseDto.setCurrentWeight(weightProgress.getWeight());
+ mockedResponseDto.setTotalActiveMinutes(0);
+
+ // Verify
+ assertEquals(mockedResponseDto, responseDto);
+ verify(userService, times(1)).getCurrentUser();
+ verify(dailyCalorieRepository, times(1)).findByDateAndUser(any(Date.class), eq(user));
+ verify(dailyCalorieRepository, times(1)).save(any(DailyCalorie.class));
+ }
+
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/IntakeRecordServiceTest.java b/src/test/java/com/example/slimfitbackend/service/IntakeRecordServiceTest.java
new file mode 100644
index 0000000..2d33fc8
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/IntakeRecordServiceTest.java
@@ -0,0 +1,80 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.DailyCalorie;
+import com.example.slimfitbackend.model.IntakeRecord;
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.payload.*;
+import com.example.slimfitbackend.payload.common.MapStructMapper;
+import com.example.slimfitbackend.repository.IntakeRecordRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Date;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+class IntakeRecordServiceTest {
+
+ @Mock
+ private DailyCalorieService dailyCalorieService;
+
+ @Mock
+ private UserService userService;
+
+ @Mock
+ private IntakeRecordRepository intakeRecordRepository;
+
+ @Mock
+ private MapStructMapper mapStructMapper;
+
+ @Mock
+ private RestTemplate restTemplate;
+
+ @InjectMocks
+ private IntakeRecordService intakeRecordService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void saveNewIntakeRecord_Success() throws Exception {
+ IntakeRecordRequest request = new IntakeRecordRequest();
+ request.setCalorieCount(200);
+ request.setMealName("Breakfast");
+ request.setNote("Test note");
+ request.setDate(new Date());
+ request.setMeal(1);
+
+ User user = new User(); // create a mock user
+
+ DailyCalorie dailyCalorie = new DailyCalorie();
+ dailyCalorie.setBreakfastActual(0);
+ dailyCalorie.setLunchActual(0);
+ dailyCalorie.setDinnerActual(0);
+ dailyCalorie.setSnackActual(0);
+ dailyCalorie.setDailyActual(0);
+
+ when(userService.getCurrentUser()).thenReturn(user);
+ when(dailyCalorieService.getDailyCalorie(user, request.getDate())).thenReturn(dailyCalorie);
+
+ IntakeRecord savedIntakeRecord = new IntakeRecord();
+
+
+ when(intakeRecordRepository.save(any())).thenReturn(savedIntakeRecord);
+ IntakeRecordResponse expectedResponse = new IntakeRecordResponse();
+ when(mapStructMapper.itakeRecordToIntakeRecordResponse(any())).thenReturn(expectedResponse);
+
+ IntakeRecordResponse actualResponse = intakeRecordService.saveNewIntakeRecord(request);
+
+ assertEquals(expectedResponse, actualResponse);
+ assertEquals(200, dailyCalorie.getBreakfastActual());
+ assertEquals(200, dailyCalorie.getDailyActual());
+ }
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/MLModelServiceTest.java b/src/test/java/com/example/slimfitbackend/service/MLModelServiceTest.java
new file mode 100644
index 0000000..97cc442
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/MLModelServiceTest.java
@@ -0,0 +1,25 @@
+package com.example.slimfitbackend.service;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class MLModelServiceTest {
+
+ @Test
+ void getCalorie_ReturnsCorrectCalorieValue() {
+ double gender = 1.0;
+ double age = 30;
+ double height = 175;
+ double weight = 70;
+ double duration = 60;
+ double exerciseTypeNum = 1;
+ double intensity = 3;
+
+ double expectedCalorie = 93.86078800514693; // An output value from the model
+
+ double actualCalorie = MLModelService.getCalorie(gender, age, height, weight, duration, exerciseTypeNum, intensity);
+
+ assertEquals(expectedCalorie, actualCalorie, 0.01);
+ }
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/MessageServiceTest.java b/src/test/java/com/example/slimfitbackend/service/MessageServiceTest.java
new file mode 100644
index 0000000..7848887
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/MessageServiceTest.java
@@ -0,0 +1,122 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.Message;
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.payload.MessageResponse;
+import com.example.slimfitbackend.payload.SendMessageRequest;
+import com.example.slimfitbackend.payload.common.MapStructMapper;
+import com.example.slimfitbackend.repository.MessageRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+
+public class MessageServiceTest {
+
+ @Mock
+ private MessageRepository messageRepository;
+
+ @Mock
+ private MapStructMapper mapStructMapper;
+
+ @Mock
+ private UserService userService;
+
+ @InjectMocks
+ private MessageService messageService;
+
+ @BeforeEach
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+ @Test
+ public void testGetAllMessageResponse() {
+ // Mocking data
+ Message message1 = new Message();
+ message1.setId(1L);
+ message1.setMessage("Test message 1");
+ User user1 = new User();
+ user1.setUserId(1L);
+ user1.setFirstName("John");
+ message1.setUser(user1);
+
+ MessageResponse messageResponse1 = new MessageResponse();
+ messageResponse1.setId(1L);
+ messageResponse1.setMessage("Test message 1");
+ messageResponse1.setUsername("John");
+
+ List messages = new ArrayList<>();
+ messages.add(message1);
+
+ List expectedResponse = new ArrayList<>();
+ expectedResponse.add(messageResponse1);
+
+ // Mocking repository behavior
+ when(messageRepository.findAll()).thenReturn(messages);
+ when(mapStructMapper.messageToMessageResponse(message1)).thenReturn(messageResponse1);
+
+ // Calling the service method
+ List actualResponse = messageService.getAllMessageResponse();
+
+ // Verifying the result
+ assertEquals(expectedResponse.size(), actualResponse.size());
+ assertEquals(expectedResponse.get(0).getId(), actualResponse.get(0).getId());
+ assertEquals(expectedResponse.get(0).getMessage(), actualResponse.get(0).getMessage());
+ assertEquals(expectedResponse.get(0).getUsername(), actualResponse.get(0).getUsername());
+
+ // Verifying interactions with mocks
+ verify(messageRepository, times(1)).findAll();
+ verify(mapStructMapper, times(1)).messageToMessageResponse(message1);
+ }
+
+ @Test
+ public void testSendMessage() throws Exception {
+ // Mocking data
+ SendMessageRequest request = new SendMessageRequest();
+ request.setMessage("Test message");
+
+ User user = new User();
+ user.setUserId(1L);
+ user.setFirstName("John");
+
+ Message message = new Message();
+ message.setId(1L);
+ message.setMessage("Test message");
+ message.setUser(user);
+ message.setDate(new Date());
+
+ MessageResponse expectedResponse = new MessageResponse();
+ expectedResponse.setId(1L);
+ expectedResponse.setMessage("Test message");
+ expectedResponse.setUsername("John");
+
+ // Mocking getCurrentUser() method of UserService
+ when(userService.getCurrentUser()).thenReturn(user);
+
+ // Mocking repository behavior
+ when(messageRepository.save(any(Message.class))).thenReturn(message);
+ when(mapStructMapper.messageToMessageResponse(message)).thenReturn(expectedResponse);
+
+ // Calling the service method
+ MessageResponse actualResponse = messageService.sendMessage(request);
+
+ // Verifying the result
+ assertEquals(expectedResponse.getId(), actualResponse.getId());
+ assertEquals(expectedResponse.getMessage(), actualResponse.getMessage());
+ assertEquals(expectedResponse.getUsername(), actualResponse.getUsername());
+
+ // Verifying interactions with mocks
+ verify(userService, times(1)).getCurrentUser();
+ verify(messageRepository, times(1)).save(any(Message.class));
+ verify(mapStructMapper, times(1)).messageToMessageResponse(message);
+ }
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/MyUserDetailsServiceTest.java b/src/test/java/com/example/slimfitbackend/service/MyUserDetailsServiceTest.java
new file mode 100644
index 0000000..2c98f16
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/MyUserDetailsServiceTest.java
@@ -0,0 +1,58 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.repository.UserRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+class MyUserDetailsServiceTest {
+
+ @Mock
+ private UserRepository userRepository;
+
+ @InjectMocks
+ private MyUserDetailsService userDetailsService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void loadUserByUsername_UserFound_ReturnsUserDetails() {
+ String username = "test@example.com";
+ User user = new User();
+ user.setEmail(username);
+ user.setPassword("hashedPassword");
+
+ when(userRepository.findByEmail(username)).thenReturn(Optional.of(user));
+
+ UserDetails userDetails = userDetailsService.loadUserByUsername(username);
+
+ assertNotNull(userDetails);
+ assertEquals(username, userDetails.getUsername());
+ assertEquals("foo", userDetails.getPassword()); // Assuming password is always "foo" for testing purposes
+ assertTrue(userDetails.getAuthorities().isEmpty()); // Assuming no authorities for simplicity
+ }
+
+ @Test
+ void loadUserByUsername_UserNotFound_ThrowsUsernameNotFoundException() {
+ String username = "nonexistent@example.com";
+
+ when(userRepository.findByEmail(username)).thenReturn(Optional.empty());
+
+ assertThrows(UsernameNotFoundException.class, () -> {
+ userDetailsService.loadUserByUsername(username);
+ });
+ }
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/ProgressServiceTest.java b/src/test/java/com/example/slimfitbackend/service/ProgressServiceTest.java
new file mode 100644
index 0000000..efc4bcd
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/ProgressServiceTest.java
@@ -0,0 +1,88 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.WeightProgress;
+import com.example.slimfitbackend.payload.UserWeightResponse;
+import com.example.slimfitbackend.repository.WeightProgressRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+class ProgressServiceTest {
+
+ @Mock
+ private WeightProgressRepository weightProgressRepository;
+
+ @Mock
+ private UserService userService;
+
+ @InjectMocks
+ private ProgressService progressService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void getActualWeightProgress_ReturnsUserWeightResponseList() throws Exception {
+ User user = new User();
+ user.setUserId(1L);
+
+ WeightProgress weightProgress1 = new WeightProgress();
+ weightProgress1.setWeight(70.0);
+ weightProgress1.setDate(new Date());
+
+ WeightProgress weightProgress2 = new WeightProgress();
+ weightProgress2.setWeight(68.5);
+ weightProgress2.setDate(new Date());
+
+ List weightProgressList = new ArrayList<>();
+ weightProgressList.add(weightProgress1);
+ weightProgressList.add(weightProgress2);
+
+ when(userService.getCurrentUser()).thenReturn(user);
+ when(weightProgressRepository.findAllByUserOrderByDate(user)).thenReturn(weightProgressList);
+
+ List actualWeightProgress = progressService.getActualWeightProgress();
+
+ assertEquals(2, actualWeightProgress.size());
+ assertEquals(70.0, actualWeightProgress.get(0).getWeight());
+ assertEquals(68.5, actualWeightProgress.get(1).getWeight());
+ }
+
+ @Test
+ void getUserGoal_ReturnsUserWeightResponseList() throws Exception {
+ User user = new User();
+
+ LocalDate today = LocalDate.now();
+ LocalDate oneWeekAgo = today.minusWeeks(1);
+ LocalDate untilDate = oneWeekAgo.minusDays(1);
+ Date untilUtilDate = Date.from(untilDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+
+ user.setStartDate(untilUtilDate);
+ user.setStartWeight(75.0);
+ user.setWeeklyWeightLossGoal(500);
+
+ when(userService.getCurrentUser()).thenReturn(user);
+
+ List userGoal = progressService.getUserGoal();
+
+ assertEquals(2, userGoal.size());
+ assertEquals(75.0, userGoal.get(0).getWeight());
+
+ assertEquals(74.5, userGoal.get(1).getWeight());
+ }
+
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/UserActivityServiceTest.java b/src/test/java/com/example/slimfitbackend/service/UserActivityServiceTest.java
new file mode 100644
index 0000000..c5fb02e
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/UserActivityServiceTest.java
@@ -0,0 +1,95 @@
+package com.example.slimfitbackend.service;
+
+import com.example.slimfitbackend.model.ActivityType;
+import com.example.slimfitbackend.model.DailyCalorie;
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.UserActivity;
+import com.example.slimfitbackend.payload.NewActivityRequest;
+import com.example.slimfitbackend.payload.NewActivityResponse;
+import com.example.slimfitbackend.payload.common.MapStructMapper;
+import com.example.slimfitbackend.repository.ActivityTypeRepository;
+import com.example.slimfitbackend.repository.DailyCalorieRepository;
+import com.example.slimfitbackend.repository.UserActivityRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Date;
+import java.util.Optional;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+class UserActivityServiceTest {
+
+ @Mock
+ private UserService userService;
+
+ @Mock
+ private DailyCalorieRepository dailyCalorieRepository;
+
+ @Mock
+ private ActivityTypeRepository activityTypeRepository;
+
+ @Mock
+ private DailyCalorieService dailyCalorieService;
+
+ @Mock
+ private UserActivityRepository userActivityRepository;
+
+ @Mock
+ private MapStructMapper mapStructMapper;
+
+ @InjectMocks
+ private UserActivityService userActivityService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.openMocks(this);
+ }
+
+ @Test
+ void addNewActivity_ReturnsNewActivityResponse() {
+ User user = new User();
+ user.setUserId(1L);
+
+ NewActivityRequest newActivityRequest = new NewActivityRequest();
+ newActivityRequest.setDate(new Date());
+ newActivityRequest.setDuration(60);
+ newActivityRequest.setIntensity(2);
+ newActivityRequest.setCalorie(300);
+ newActivityRequest.setActivityType(1L);
+
+ ActivityType activityType = new ActivityType();
+ activityType.setActId(1L);
+ activityType.setName("Running");
+
+ UserActivity userActivity = new UserActivity();
+ userActivity.setUser(user);
+ userActivity.setDate(newActivityRequest.getDate());
+ userActivity.setDuration(newActivityRequest.getDuration());
+ userActivity.setIntensity(newActivityRequest.getIntensity());
+ userActivity.setCalorie(newActivityRequest.getCalorie());
+ userActivity.setActivityType(activityType);
+
+ when(userService.getCurrentUser()).thenReturn(user);
+ when(activityTypeRepository.findById(newActivityRequest.getActivityType())).thenReturn(Optional.of(activityType));
+ when(userActivityRepository.save(any(UserActivity.class))).thenReturn(userActivity);
+ when(dailyCalorieService.getDailyCalorie(any(),any())).thenReturn(new DailyCalorie());
+
+ NewActivityResponse expectedResponse = new NewActivityResponse();
+ expectedResponse.setDate(userActivity.getDate());
+ expectedResponse.setDuration(userActivity.getDuration());
+ expectedResponse.setIntensity(userActivity.getIntensity());
+ expectedResponse.setCalorie(userActivity.getCalorie());
+
+ when(mapStructMapper.userActivityToNewActivityResponse(userActivity)).thenReturn(expectedResponse);
+
+ NewActivityResponse actualResponse = userActivityService.addNewActivity(newActivityRequest);
+
+ assertEquals(expectedResponse, actualResponse);
+ }
+
+}
diff --git a/src/test/java/com/example/slimfitbackend/service/UserServiceTest.java b/src/test/java/com/example/slimfitbackend/service/UserServiceTest.java
new file mode 100644
index 0000000..8b28db8
--- /dev/null
+++ b/src/test/java/com/example/slimfitbackend/service/UserServiceTest.java
@@ -0,0 +1,165 @@
+package com.example.slimfitbackend.service;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+import com.example.slimfitbackend.exceptions.CustomException;
+import com.example.slimfitbackend.model.User;
+import com.example.slimfitbackend.model.WeightProgress;
+import com.example.slimfitbackend.payload.GetUserResponse;
+import com.example.slimfitbackend.payload.SaveUserWeightRequest;
+import com.example.slimfitbackend.payload.UserWeightResponse;
+import com.example.slimfitbackend.payload.common.MapStructMapper;
+import com.example.slimfitbackend.repository.UserRepository;
+import com.example.slimfitbackend.repository.WeightProgressRepository;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+class UserServiceTest {
+
+ @Mock
+ private MapStructMapper mapStructMapper;
+
+ @Mock
+ private UserRepository userRepository;
+
+ @Mock
+ private WeightProgressRepository weightProgressRepository;
+
+ @InjectMocks
+ private UserService userService;
+
+ @BeforeEach
+ void setUp() {
+ MockitoAnnotations.initMocks(this);
+ }
+
+
+ @Test
+ void testGetCurrentUser() {
+ // Arrange
+ User user = new User();
+ user.setEmail("test@example.com");
+
+ UserService userServiceSpy = spy(userService);
+ doReturn(user).when(userServiceSpy).getCurrentUser();
+
+ // Act
+ User currentUser = userServiceSpy.getCurrentUser();
+
+ // Assert
+ assertNotNull(currentUser);
+ assertEquals(user.getEmail(), currentUser.getEmail());
+ verify(userServiceSpy, times(1)).getCurrentUser();
+ verifyNoMoreInteractions(userServiceSpy);
+ }
+
+ @Test
+ void testGetUser() {
+ // Arrange
+ User user = new User();
+ user.setEmail("test@example.com");
+
+ GetUserResponse expectedResponse = new GetUserResponse();
+ expectedResponse.setEmail("test@example.com");
+
+ UserService userServiceSpy = spy(userService);
+ doReturn(user).when(userServiceSpy).getCurrentUser();
+ when(mapStructMapper.userToGetUserResponse(user)).thenReturn(expectedResponse);
+
+ // Act
+ GetUserResponse response = userServiceSpy.getUser();
+
+ // Assert
+ assertNotNull(response);
+ assertEquals(expectedResponse.getEmail(), response.getEmail());
+ verify(userServiceSpy, times(1)).getCurrentUser();
+ verify(mapStructMapper, times(1)).userToGetUserResponse(user);
+ }
+
+ @Test
+ void testGetUserWeightResponse() {
+ // Arrange
+ User user = new User();
+ user.setEmail("test@example.com");
+
+ WeightProgress weightProgress = new WeightProgress();
+ weightProgress.setWeight(70);
+
+ UserService userServiceSpy = spy(userService);
+ doReturn(user).when(userServiceSpy).getCurrentUser();
+ when(userServiceSpy.getUserWeight()).thenReturn(weightProgress);
+
+ // Act
+ UserWeightResponse response = userServiceSpy.getUserWeightResponse();
+
+ // Assert
+ assertNotNull(response);
+ assertEquals(70, response.getWeight());
+ }
+
+ @Test
+ void testGetUserWeight() {
+ // Arrange
+ User user = new User();
+ user.setEmail("test@example.com");
+
+ WeightProgress weightProgress = new WeightProgress();
+ weightProgress.setWeight(70);
+
+ UserService userServiceSpy = spy(userService);
+ doReturn(user).when(userServiceSpy).getCurrentUser();
+ when(weightProgressRepository.findAllByUserOrderByDate(user)).thenReturn(List.of(weightProgress));
+
+ // Act
+ WeightProgress result = userServiceSpy.getUserWeight();
+
+ // Assert
+ assertNotNull(result);
+ assertEquals(70, result.getWeight());
+ verify(userServiceSpy, times(1)).getCurrentUser();
+ verify(weightProgressRepository, times(1)).findAllByUserOrderByDate(user);
+ }
+
+ @Test
+ void testSaveUserWeight() throws Exception {
+ // Arrange
+ SaveUserWeightRequest saveUserWeightRequest = new SaveUserWeightRequest();
+ saveUserWeightRequest.setWeight(70);
+
+ User user = new User();
+ user.setEmail("test@example.com");
+
+ UserService userServiceSpy = spy(userService);
+ doReturn(user).when(userServiceSpy).getCurrentUser();
+
+ // Act
+ UserWeightResponse response = userServiceSpy.saveUserWeight(saveUserWeightRequest);
+
+ // Assert
+ assertNotNull(response);
+ assertEquals(70, response.getWeight());
+ verify(userServiceSpy, times(1)).getCurrentUser();
+ verify(weightProgressRepository, times(1)).save(any(WeightProgress.class));
+ }
+
+ @Test
+ void testSaveUserWeight_ThrowsException() {
+ // Arrange
+ SaveUserWeightRequest saveUserWeightRequest = new SaveUserWeightRequest();
+ saveUserWeightRequest.setWeight(70);
+
+ UserService userServiceSpy = spy(userService);
+ doThrow(CustomException.class).when(userServiceSpy).getCurrentUser();
+
+ // Act & Assert
+ assertThrows(CustomException.class, () -> userServiceSpy.saveUserWeight(saveUserWeightRequest));
+ verify(userServiceSpy, times(1)).getCurrentUser();
+ verifyNoInteractions(weightProgressRepository);
+ }
+}