Spaces:
Sleeping
Sleeping
Commit
·
2b34119
1
Parent(s):
d7afbe6
feat(user-home): daily goals
Browse files
src/modules/users/modules/home/controllers/home.controller.ts
CHANGED
@@ -20,6 +20,7 @@ import { homeStreakQueryValidation } from "../validations/home-streak.query.vali
|
|
20 |
import { UserHomeService } from "../services/user-home.service";
|
21 |
import { IUserRequest } from "@common/interfaces/user-request.interface";
|
22 |
import { UserHomeYourDailyIntakeSerialization } from "../responses/user-home-your-daily-intake.serialization";
|
|
|
23 |
|
24 |
|
25 |
@Controller("/user/homePage")
|
@@ -33,6 +34,7 @@ export class homePageController extends BaseController {
|
|
33 |
this.router.get("/", asyncHandler(this.getHomePage));
|
34 |
this.router.get("/streak", queryValidator(homeStreakQueryValidation), asyncHandler(this.getHomePageStreak));
|
35 |
this.router.get("/your-daily-intake", asyncHandler(this.getHomePageYourDailyIntake));
|
|
|
36 |
}
|
37 |
|
38 |
@SwaggerGet('/streak')
|
@@ -83,6 +85,22 @@ export class homePageController extends BaseController {
|
|
83 |
);
|
84 |
};
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
@SwaggerGet()
|
87 |
@SwaggerResponse(HomeSerialization)
|
88 |
@SwaggerSummary("Home")
|
|
|
20 |
import { UserHomeService } from "../services/user-home.service";
|
21 |
import { IUserRequest } from "@common/interfaces/user-request.interface";
|
22 |
import { UserHomeYourDailyIntakeSerialization } from "../responses/user-home-your-daily-intake.serialization";
|
23 |
+
import { UserHomeDailyGoalsSerialization } from "../responses/user-home-daily-goals.serialization";
|
24 |
|
25 |
|
26 |
@Controller("/user/homePage")
|
|
|
34 |
this.router.get("/", asyncHandler(this.getHomePage));
|
35 |
this.router.get("/streak", queryValidator(homeStreakQueryValidation), asyncHandler(this.getHomePageStreak));
|
36 |
this.router.get("/your-daily-intake", asyncHandler(this.getHomePageYourDailyIntake));
|
37 |
+
this.router.get("/daily-goals", asyncHandler(this.getHomePageDailyGoals));
|
38 |
}
|
39 |
|
40 |
@SwaggerGet('/streak')
|
|
|
85 |
);
|
86 |
};
|
87 |
|
88 |
+
@SwaggerGet('/daily-goals')
|
89 |
+
@SwaggerResponse(UserHomeDailyGoalsSerialization)
|
90 |
+
@SwaggerSummary("Home Daily Goals")
|
91 |
+
@SwaggerDescription("Get daily goals for user home")
|
92 |
+
getHomePageDailyGoals = async (req: IUserRequest, res: Response) => {
|
93 |
+
const dailyGoals = await this.userHomeService.getDailyGoals(req.jwtPayload.id)
|
94 |
+
|
95 |
+
return JsonResponse.success(
|
96 |
+
{
|
97 |
+
data: serialize(dailyGoals, UserHomeDailyGoalsSerialization)
|
98 |
+
},
|
99 |
+
res
|
100 |
+
);
|
101 |
+
}
|
102 |
+
|
103 |
+
|
104 |
@SwaggerGet()
|
105 |
@SwaggerResponse(HomeSerialization)
|
106 |
@SwaggerSummary("Home")
|
src/modules/users/modules/home/responses/user-home-daily-goals.serialization.ts
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { SwaggerResponseProperty } from "@lib/decorators/swagger-response-property.decorator";
|
2 |
+
import { Expose } from "class-transformer";
|
3 |
+
|
4 |
+
|
5 |
+
export class UserHomeDailyGoalsSerialization {
|
6 |
+
@Expose()
|
7 |
+
@SwaggerResponseProperty('number')
|
8 |
+
waterGoal: number;
|
9 |
+
|
10 |
+
@Expose()
|
11 |
+
@SwaggerResponseProperty('number')
|
12 |
+
waterConsumed: number;
|
13 |
+
|
14 |
+
@Expose()
|
15 |
+
@SwaggerResponseProperty('number')
|
16 |
+
stepsGoal: number;
|
17 |
+
|
18 |
+
@Expose()
|
19 |
+
@SwaggerResponseProperty('number')
|
20 |
+
stepsDone: number;
|
21 |
+
|
22 |
+
@Expose()
|
23 |
+
@SwaggerResponseProperty('number')
|
24 |
+
exercisesCals: number;
|
25 |
+
|
26 |
+
@Expose()
|
27 |
+
@SwaggerResponseProperty('number')
|
28 |
+
exercisesHours: number;
|
29 |
+
}
|
src/modules/users/modules/home/services/user-home.service.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
import { HomeStreakSerialization } from "../responses/home-streak.serialization";
|
2 |
import { faker } from '@faker-js/faker';
|
3 |
import { UserHomeYourDailyIntakeSerialization } from "../responses/user-home-your-daily-intake.serialization";
|
|
|
4 |
|
5 |
export class UserHomeService {
|
6 |
private getDaysArray(startDate: Date, endDate: Date): string[] {
|
@@ -11,6 +12,26 @@ export class UserHomeService {
|
|
11 |
return days;
|
12 |
}
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
async getHomePageYourDailyIntake(_userId: string): Promise<UserHomeYourDailyIntakeSerialization>{
|
15 |
const caloriesGoal = faker.number.int({ min: 29, max: 100 });
|
16 |
const caloriesLeft = faker.number.int({ min: 0, max: caloriesGoal});
|
|
|
1 |
import { HomeStreakSerialization } from "../responses/home-streak.serialization";
|
2 |
import { faker } from '@faker-js/faker';
|
3 |
import { UserHomeYourDailyIntakeSerialization } from "../responses/user-home-your-daily-intake.serialization";
|
4 |
+
import { UserHomeDailyGoalsSerialization } from "../responses/user-home-daily-goals.serialization";
|
5 |
|
6 |
export class UserHomeService {
|
7 |
private getDaysArray(startDate: Date, endDate: Date): string[] {
|
|
|
12 |
return days;
|
13 |
}
|
14 |
|
15 |
+
async getDailyGoals(_userId: string): Promise<UserHomeDailyGoalsSerialization> {
|
16 |
+
const waterGoal = faker.number.int({ min: 29, max: 100 });
|
17 |
+
const waterConsumed = faker.number.int({ min: 0, max: waterGoal });
|
18 |
+
|
19 |
+
const stepsGoal = faker.number.int({ min: 29, max: 100 });
|
20 |
+
const stepsDone = faker.number.int({ min: 0, max: stepsGoal });
|
21 |
+
|
22 |
+
const exercisesCals = faker.number.int({ min: 29, max: 100 });
|
23 |
+
const exercisesHours = faker.number.int({ min: 29, max: 100 });
|
24 |
+
|
25 |
+
return {
|
26 |
+
waterGoal,
|
27 |
+
waterConsumed,
|
28 |
+
stepsGoal,
|
29 |
+
stepsDone,
|
30 |
+
exercisesCals,
|
31 |
+
exercisesHours
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
async getHomePageYourDailyIntake(_userId: string): Promise<UserHomeYourDailyIntakeSerialization>{
|
36 |
const caloriesGoal = faker.number.int({ min: 29, max: 100 });
|
37 |
const caloriesLeft = faker.number.int({ min: 0, max: caloriesGoal});
|