1
|
|
|
package com.osomapps.pt.admin.user; |
2
|
|
|
|
3
|
|
|
import com.osomapps.pt.ResourceNotFoundException; |
4
|
|
|
import com.osomapps.pt.programs.InProgram; |
5
|
|
|
import com.osomapps.pt.programs.InProgramRepository; |
6
|
|
|
import com.osomapps.pt.programs.InWarmupWorkoutItem; |
7
|
|
|
import com.osomapps.pt.programs.InWorkout; |
8
|
|
|
import com.osomapps.pt.programs.InWorkoutItem; |
9
|
|
|
import com.osomapps.pt.programs.InWorkoutItemReport; |
10
|
|
|
import java.util.ArrayList; |
11
|
|
|
import java.util.Collections; |
12
|
|
|
import java.util.List; |
13
|
|
|
import java.util.stream.Collectors; |
14
|
|
|
import org.apache.commons.lang3.BooleanUtils; |
15
|
|
|
import org.springframework.stereotype.Service; |
16
|
|
|
|
17
|
|
|
@Service |
18
|
|
|
class AdminUserProgramService { |
19
|
|
|
|
20
|
|
|
private final InProgramRepository inProgramRepository; |
21
|
|
|
|
22
|
|
|
AdminUserProgramService(InProgramRepository inProgramRepository) { |
23
|
|
|
this.inProgramRepository = inProgramRepository; |
24
|
|
|
} |
25
|
|
|
|
26
|
|
|
static UserProgramResponseDTO inProgramToDto(InProgram inProgram) { |
27
|
|
|
UserProgramResponseDTO program = new UserProgramResponseDTO(); |
28
|
|
|
program.setId(inProgram.getId()); |
29
|
|
|
program.setName(inProgram.getName()); |
30
|
|
|
program.setType(inProgram.getD_program_type()); |
31
|
|
|
program.setWorkouts(new ArrayList<>()); |
32
|
|
|
program.setCreated(inProgram.getCreated()); |
33
|
|
|
for (InWorkout inWorkout : inProgram.getInWorkouts()) { |
34
|
|
|
UserWorkoutResponseDTO workout = new UserWorkoutResponseDTO(); |
35
|
|
|
workout.setId(inWorkout.getId()); |
36
|
|
|
workout.setName(inWorkout.getD_workout_name()); |
37
|
|
|
workout.setItems(new ArrayList<>()); |
38
|
|
|
program.getWorkouts().add(workout); |
39
|
|
|
if (inWorkout.getInWarmupWorkoutItems() != null |
40
|
|
|
&& !inWorkout.getInWarmupWorkoutItems().isEmpty()) { |
41
|
|
|
InWarmupWorkoutItem inWarmupWorkoutItem = |
42
|
|
|
inWorkout.getInWarmupWorkoutItems().get(0); |
43
|
|
|
UserWarmupWorkoutItemResponseDTO warmupWorkoutItem = |
44
|
|
|
new UserWarmupWorkoutItemResponseDTO(); |
45
|
|
|
warmupWorkoutItem.setId(inWarmupWorkoutItem.getId()); |
46
|
|
|
warmupWorkoutItem.setExercise_id(inWarmupWorkoutItem.getExercise_id()); |
47
|
|
|
warmupWorkoutItem.setExercise_name(inWarmupWorkoutItem.getD_exercise_name()); |
48
|
|
|
warmupWorkoutItem.setSpeed(inWarmupWorkoutItem.getSpeed()); |
49
|
|
|
warmupWorkoutItem.setIncline(inWarmupWorkoutItem.getIncline()); |
50
|
|
|
warmupWorkoutItem.setTime_in_sec(inWarmupWorkoutItem.getTime_in_sec()); |
51
|
|
|
workout.setWarmup(warmupWorkoutItem); |
52
|
|
|
} |
53
|
|
|
for (InWorkoutItem inWorkoutItem : inWorkout.getInWorkoutItems()) { |
54
|
|
|
UserWorkoutItemResponseDTO userWorkoutItemResponseDTO = |
55
|
|
|
new UserWorkoutItemResponseDTO() |
56
|
|
|
.setId(inWorkoutItem.getId()) |
57
|
|
|
.setExercise_id(inWorkoutItem.getExercise_id()) |
58
|
|
|
.setExercise_name(inWorkoutItem.getD_exercise_name()) |
59
|
|
|
.setSets(inWorkoutItem.getInWorkoutItemSets().size()) |
60
|
|
|
.setRepetitions( |
61
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
62
|
|
|
.map(set -> set.getRepetitions()) |
63
|
|
|
.collect(Collectors.toList())) |
64
|
|
|
.setRepetitionsToFailure( |
65
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
66
|
|
|
.map( |
67
|
|
|
set -> |
68
|
|
|
BooleanUtils.isTrue( |
69
|
|
|
set |
70
|
|
|
.getRepetitions_to_failure())) |
71
|
|
|
.collect(Collectors.toList())) |
72
|
|
|
.setWeight( |
73
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
74
|
|
|
.map(set -> set.getWeight()) |
75
|
|
|
.collect(Collectors.toList())) |
76
|
|
|
.setBodyweight( |
77
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
78
|
|
|
.map( |
79
|
|
|
set -> |
80
|
|
|
BooleanUtils.isTrue( |
81
|
|
|
set.getBodyweight())) |
82
|
|
|
.collect(Collectors.toList())) |
83
|
|
|
.setTimeInSec( |
84
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
85
|
|
|
.map(set -> set.getTime_in_sec()) |
86
|
|
|
.collect(Collectors.toList())) |
87
|
|
|
.setSpeed( |
88
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
89
|
|
|
.map(set -> set.getSpeed()) |
90
|
|
|
.collect(Collectors.toList())) |
91
|
|
|
.setIncline( |
92
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
93
|
|
|
.map(set -> set.getIncline()) |
94
|
|
|
.collect(Collectors.toList())) |
95
|
|
|
.setResistance( |
96
|
|
|
inWorkoutItem.getInWorkoutItemSets().stream() |
97
|
|
|
.map(set -> set.getResistance()) |
98
|
|
|
.collect(Collectors.toList())); |
99
|
|
|
InWorkoutItemReport inWorkoutItemReport = |
100
|
|
|
inWorkoutItem.getInWorkoutItemReports().isEmpty() |
101
|
|
|
? null |
102
|
|
|
: inWorkoutItem |
103
|
|
|
.getInWorkoutItemReports() |
104
|
|
|
.get(inWorkoutItem.getInWorkoutItemReports().size() - 1); |
105
|
|
|
if (inWorkoutItemReport != null) { |
106
|
|
|
userWorkoutItemResponseDTO |
107
|
|
|
.setReportSets(inWorkoutItemReport.getInWorkoutItemSetReports().size()) |
108
|
|
|
.setReportRepetitions( |
109
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
110
|
|
|
.map(set -> set.getRepetitions()) |
111
|
|
|
.collect(Collectors.toList())) |
112
|
|
|
.setReportWeight( |
113
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
114
|
|
|
.map( |
115
|
|
|
set -> |
116
|
|
|
set.getWeight() == null |
117
|
|
|
? null |
118
|
|
|
: set.getWeight().intValue()) |
119
|
|
|
.collect(Collectors.toList())) |
120
|
|
|
.setReportTimeInMin( |
121
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
122
|
|
|
.map(set -> set.getTime_in_sec()) |
123
|
|
|
.collect(Collectors.toList())) |
124
|
|
|
.setReportSpeed( |
125
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
126
|
|
|
.map(set -> set.getSpeed()) |
127
|
|
|
.collect(Collectors.toList())) |
128
|
|
|
.setReportIncline( |
129
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
130
|
|
|
.map(set -> set.getIncline()) |
131
|
|
|
.collect(Collectors.toList())) |
132
|
|
|
.setReportResistance( |
133
|
|
|
inWorkoutItemReport.getInWorkoutItemSetReports().stream() |
134
|
|
|
.map(set -> set.getResistance()) |
135
|
|
|
.collect(Collectors.toList())); |
136
|
|
|
} |
137
|
|
|
workout.getItems().add(userWorkoutItemResponseDTO); |
138
|
|
|
} |
139
|
|
|
} |
140
|
|
|
return program; |
141
|
|
|
} |
142
|
|
|
|
143
|
|
|
List<UserProgramResponseDTO> findAll() { |
144
|
|
|
return inProgramRepository.findAll().stream() |
145
|
|
|
.map(AdminUserProgramService::inProgramToDto) |
146
|
|
|
.collect(Collectors.toList()); |
147
|
|
|
} |
148
|
|
|
|
149
|
|
|
UserProgramResponseDTO findOne(Long id) { |
150
|
|
|
final InProgram inProgram = inProgramRepository.findById(id).orElse(null); |
151
|
|
|
if (inProgram == null) { |
152
|
|
|
throw new ResourceNotFoundException("Program with id " + id + " not found."); |
153
|
|
|
} |
154
|
|
|
return inProgramToDto(inProgram); |
155
|
|
|
} |
156
|
|
|
|
157
|
|
|
UserProgramResponseDTO create(UserProgramRequestDTO userProgramRequestDTO) { |
158
|
|
|
final InProgram inProgram = |
159
|
|
|
new InProgram() |
160
|
|
|
.setName(userProgramRequestDTO.getName()) |
161
|
|
|
.setInWorkouts( |
162
|
|
|
userProgramRequestDTO.getWorkouts().stream() |
163
|
|
|
.map( |
164
|
|
|
workout -> |
165
|
|
|
new InWorkout() |
166
|
|
|
.setD_workout_name( |
167
|
|
|
workout.getName()) |
168
|
|
|
.setInWorkoutItems( |
169
|
|
|
workout.getItems().stream() |
170
|
|
|
.map( |
171
|
|
|
item -> |
172
|
|
|
new InWorkoutItem() |
173
|
|
|
.setInWorkoutItemSets( |
174
|
|
|
Collections |
175
|
|
|
.emptyList()) |
176
|
|
|
.setInWorkoutItemReports( |
177
|
|
|
Collections |
178
|
|
|
.emptyList())) |
179
|
|
|
.collect( |
180
|
|
|
Collectors |
181
|
|
|
.toList()))) |
182
|
|
|
.collect(Collectors.toList())); |
183
|
|
|
final InProgram savedInProgram = inProgramRepository.save(inProgram); |
184
|
|
|
return inProgramToDto(savedInProgram); |
185
|
|
|
} |
186
|
|
|
|
187
|
|
|
UserProgramResponseDTO update(Long id, UserProgramRequestDTO userProgramRequestDTO) { |
|
|
|
|
188
|
|
|
final InProgram inProgram = inProgramRepository.findById(id).orElse(null); |
189
|
|
|
if (inProgram == null) { |
190
|
|
|
throw new ResourceNotFoundException("Program with id " + id + " not found."); |
191
|
|
|
} |
192
|
|
|
return inProgramToDto(inProgram); |
193
|
|
|
} |
194
|
|
|
|
195
|
|
|
UserProgramResponseDTO delete(Long id) { |
196
|
|
|
final InProgram inProgram = inProgramRepository.findById(id).orElse(null); |
197
|
|
|
if (inProgram == null) { |
198
|
|
|
throw new ResourceNotFoundException("Program with id " + id + " not found."); |
199
|
|
|
} |
200
|
|
|
UserProgramResponseDTO userProgramResponseDTO = inProgramToDto(inProgram); |
201
|
|
|
inProgramRepository.deleteById(id); |
202
|
|
|
return userProgramResponseDTO; |
203
|
|
|
} |
204
|
|
|
} |
205
|
|
|
|