File size: 3,063 Bytes
733f745
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import { Expose, Transform } from "class-transformer";
import { serialize } from "@helpers/serialize";
import { SwaggerResponseProperty } from "@lib/decorators/swagger-response-property.decorator";


class DaysInHome {
  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  day_number: number;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  total_number_exercises: number;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  day_type: string;

  @Expose()
  @SwaggerResponseProperty({ type: "boolean" })
  is_done: Boolean;


}

class weeksInHome {
  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  week_number: number;

  @Expose()
  @SwaggerResponseProperty({ type: "boolean" })
  is_done: Boolean;

  @Expose({ name: "days" })
  @SwaggerResponseProperty({ type: [DaysInHome] })
  @Transform(({ value }) => serialize(value, DaysInHome))
  days: any;
}

class WorkoutInHome {
  @Expose({ name: "_id" })
  @SwaggerResponseProperty({ type: "string" })
  id: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  name: string;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  min_per_day: number;
}

class MyWorkoutHome {
  @Expose({ name: "_id" })
  @SwaggerResponseProperty({ type: "string" })
  id: string;

  @Expose()
  @SwaggerResponseProperty({ type: WorkoutInHome })
  @Transform(({ value }) => serialize(value, WorkoutInHome))
  workout: any;

  @Expose()
  @SwaggerResponseProperty({ type: "boolean" })
  is_active: boolean;

  @Expose()
  @SwaggerResponseProperty({ type: weeksInHome })
  @Transform(({ value }) => serialize(value, weeksInHome))
  weeks: any;
}

class PreferencesUserHome {
  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  fitness_goal: string;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  target_weight: number;

  @Expose()
  @SwaggerResponseProperty({ type: "number" })
  workout_frequency: number;

  @Expose({ name: "preferred_days" })
  @SwaggerResponseProperty({ type: ["string"] })
  preferred_days: any;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  workout_place: string;

  @Expose()
  @SwaggerResponseProperty({ type: ["string"] })
  preferred_equipment: any;
}

class UserHome {
  @Expose({ name: "_id" })
  @SwaggerResponseProperty({ type: "string" })
  id: string;

  @Expose()
  @SwaggerResponseProperty({ type: "string" })
  name: string;

  @Expose({ name: "preferences" })
  @SwaggerResponseProperty({ type: PreferencesUserHome })
  @Transform(({ value }) => serialize(value, PreferencesUserHome))
  preferences: any;

  @Expose()
  @SwaggerResponseProperty({ type: ["string"] })
  injuries: any;
}

export class HomeSerialization {

  @Expose()
  @SwaggerResponseProperty({ type: UserHome })
  @Transform(({ value }) => serialize(value, UserHome))
  user: any;

  @Expose()
  @SwaggerResponseProperty({ type: MyWorkoutHome })
  @Transform(({ value }) => serialize(value, MyWorkoutHome))
  myWorkout: any;

  @Expose({ name: "myMealPlan" })
  @SwaggerResponseProperty({ type: {} })
  myMealPlan: any;
}