Skip to content

Commit 5aafef1

Browse files
Konstantin PankratovKonstantin Pankratov
authored andcommitted
Implement checkbox checking
1 parent 24114e9 commit 5aafef1

File tree

15 files changed

+36
-172
lines changed

15 files changed

+36
-172
lines changed

server/src/main/java/com/studybuddies/server/domain/ChapterEntity.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import jakarta.persistence.GenerationType;
77
import jakarta.persistence.Id;
88
import jakarta.persistence.JoinColumn;
9-
import jakarta.persistence.ManyToOne;
109
import jakarta.persistence.OneToMany;
1110
import java.util.ArrayList;
1211
import java.util.List;
@@ -25,10 +24,7 @@ public class ChapterEntity {
2524
private Long id;
2625
private String title;
2726

28-
@OneToMany(mappedBy = "chapter", cascade = CascadeType.ALL, orphanRemoval = true)
27+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
28+
@JoinColumn(name = "chapter_id")
2929
private List<CheckboxEntity> checkbox = new ArrayList<>();
30-
31-
@ManyToOne
32-
@JoinColumn(name = "module_id")
33-
private UserModule module;
3430
}

server/src/main/java/com/studybuddies/server/domain/CheckboxEntity.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
import jakarta.persistence.GeneratedValue;
55
import jakarta.persistence.GenerationType;
66
import jakarta.persistence.Id;
7-
import jakarta.persistence.JoinColumn;
8-
import jakarta.persistence.ManyToOne;
97
import jakarta.validation.constraints.NotBlank;
108
import java.util.UUID;
119
import lombok.Data;
@@ -25,9 +23,5 @@ public class CheckboxEntity {
2523
private String title;
2624
private boolean checked;
2725

28-
@ManyToOne
29-
@JoinColumn(name = "chapter_id")
30-
private ChapterEntity chapter;
31-
3226
private UUID userUuid;
3327
}

server/src/main/java/com/studybuddies/server/domain/UserEntity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import jakarta.persistence.Column;
55
import jakarta.persistence.Entity;
66
import jakarta.persistence.Id;
7+
import jakarta.persistence.JoinColumn;
78
import jakarta.persistence.OneToMany;
89
import java.util.ArrayList;
910
import java.util.List;
@@ -24,6 +25,7 @@ public class UserEntity {
2425
@Column(unique = true, nullable = false)
2526
String username;
2627

27-
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
28+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
29+
@JoinColumn(name = "user_uuid")
2830
private List<UserModule> modules = new ArrayList<>();
2931
}

server/src/main/java/com/studybuddies/server/domain/UserModule.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import jakarta.persistence.GenerationType;
88
import jakarta.persistence.Id;
99
import jakarta.persistence.JoinColumn;
10-
import jakarta.persistence.ManyToOne;
1110
import jakarta.persistence.OneToMany;
1211
import java.util.ArrayList;
1312
import java.util.List;
@@ -30,10 +29,7 @@ public class UserModule {
3029
private String examDate;
3130
private String examLoc;
3231

33-
@OneToMany(mappedBy = "module", cascade = CascadeType.ALL, orphanRemoval = true)
32+
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
33+
@JoinColumn(name = "module_id")
3434
private List<ChapterEntity> chapter = new ArrayList<>();
35-
36-
@ManyToOne
37-
@JoinColumn(name = "user_uuid")
38-
private UserEntity user;
3935
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.studybuddies.server.persistance;
22

33
import com.studybuddies.server.domain.CheckboxEntity;
4+
import java.util.List;
45
import java.util.UUID;
56
import org.springframework.data.repository.CrudRepository;
67
import org.springframework.stereotype.Repository;
78

89
@Repository
910
public interface CheckboxRepository extends CrudRepository<CheckboxEntity, UUID> {
11+
List<CheckboxEntity> findByUserUuid(UUID userUuid);
1012
}

server/src/main/java/com/studybuddies/server/persistance/MeetingRepository.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.util.List;
55
import java.util.Optional;
66
import java.util.UUID;
7-
import org.springframework.data.jpa.domain.Specification;
87
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
98
import org.springframework.data.repository.CrudRepository;
109
import org.springframework.stereotype.Repository;

server/src/main/java/com/studybuddies/server/services/StudyGroupService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.springframework.stereotype.Service;
2020

2121
import java.util.List;
22-
import java.util.Objects;
2322

2423
@Service
2524
@AllArgsConstructor

server/src/main/java/com/studybuddies/server/services/chapter/ChapterCrudService.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

server/src/main/java/com/studybuddies/server/services/chapter/CheckboxCrudService.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,27 @@
66
import com.studybuddies.server.services.interfaces.CRUDService;
77
import com.studybuddies.server.web.dto.chapter.CheckboxChangeRequest;
88
import com.studybuddies.server.web.dto.chapter.CheckboxCreationRequest;
9-
import com.studybuddies.server.web.dto.interfaces.ChangeRequest;
109
import com.studybuddies.server.web.dto.interfaces.Responses;
11-
import com.studybuddies.server.web.mapper.CheckboxMapper;
10+
import lombok.RequiredArgsConstructor;
11+
import org.springframework.stereotype.Service;
1212

13-
import java.util.Optional;
14-
import java.util.UUID;
1513

14+
@Service
15+
@RequiredArgsConstructor
1616
public class CheckboxCrudService implements CRUDService<CheckboxCreationRequest, CheckboxChangeRequest, Responses> {
17-
private CheckboxRepository checkboxRepository;
18-
private CheckboxMapper checkboxMapper;
17+
18+
private final CheckboxRepository checkboxRepository;
1919

2020
@Override
2121
public void update(String targetUUID, CheckboxChangeRequest r, String clientUUID) {
22-
23-
24-
25-
22+
var checkboxes = checkboxRepository.findByUserUuid(UUIDService.parseUUID(clientUUID));
23+
24+
for(CheckboxEntity checkbox : checkboxes) {
25+
var checkboxId = checkbox.getId().toString();
26+
if(checkboxId.equals(r.checkboxId)) {
27+
checkbox.setChecked(!checkbox.isChecked());
28+
checkboxRepository.save(checkbox);
29+
}
30+
}
2631
}
27-
28-
2932
}

server/src/main/java/com/studybuddies/server/services/user/UserService.java

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
import com.studybuddies.server.domain.Filter;
66
import com.studybuddies.server.domain.UserEntity;
77
import com.studybuddies.server.domain.UserModule;
8-
import com.studybuddies.server.persistance.CheckboxRepository;
9-
import com.studybuddies.server.persistance.UserModuleRepository;
108
import com.studybuddies.server.persistance.UserRepository;
119
import com.studybuddies.server.services.UUIDService;
1210
import com.studybuddies.server.services.exceptions.ModuleNotFoundException;
@@ -18,7 +16,6 @@
1816
import com.studybuddies.server.web.dto.user.UserAccountSetupRequest;
1917
import com.studybuddies.server.web.dto.user.UserModuleReq;
2018
import com.studybuddies.server.web.dto.user.UserResponse;
21-
import com.studybuddies.server.web.mapper.ChapterMapper;
2219
import com.studybuddies.server.web.mapper.UserMapper;
2320
import com.studybuddies.server.web.mapper.UserModuleMapper;
2421
import com.studybuddies.server.web.mapper.exceptions.AccountSetupAlreadyFinished;
@@ -36,9 +33,6 @@ public class UserService implements
3633
private final UserMapper userMapper;
3734
private final UserModuleMapper userModuleMapper;
3835
private final ModuleValidationService moduleValidationService;
39-
private final UserModuleRepository userModuleRepository;
40-
private final ChapterMapper chapterMapper;
41-
private final CheckboxRepository checkboxRepository;
4236

4337
@Override
4438
public List<UserResponse> get(String userUUID, Filter filter) {
@@ -67,36 +61,6 @@ public void create(UserAccountSetupRequest userAccountSetupRequest, String userU
6761
userRepository.save(user);
6862
}
6963

70-
public void patch(List<UserModuleReq> requestList, String userUUID) {
71-
Optional<UserEntity> maybeUser = userRepository.findById(UUIDService.parseUUID(userUUID));
72-
73-
if (maybeUser.isPresent()) {
74-
UserEntity user = maybeUser.get();
75-
List<UserModule> userModules = user.getModules();
76-
77-
List<CheckboxEntity> userCheckboxes = userModules.stream()
78-
.flatMap(module -> module.getChapter().stream())
79-
.flatMap(chapter -> chapter.getCheckbox().stream())
80-
.toList();
81-
82-
List<CheckboxEntity> reqCheckboxes = requestList.stream()
83-
.flatMap(module -> Arrays.stream(module.getChapter()))
84-
.flatMap(
85-
chapterEntityRequest -> chapterMapper.of(chapterEntityRequest).getCheckbox().stream())
86-
.toList();
87-
88-
for (CheckboxEntity userCheckbox : userCheckboxes) {
89-
for (CheckboxEntity reqCheckBox : reqCheckboxes) {
90-
if (userCheckbox.getId() == reqCheckBox.getId()) {
91-
CheckboxEntity candidate = checkboxRepository.findById(userCheckbox.getId()).get();
92-
candidate.setChecked(!candidate.isChecked());
93-
checkboxRepository.save(candidate);
94-
}
95-
}
96-
}
97-
}
98-
}
99-
10064
@Override
10165
public void update(String targetUUID, AccountChangeRequest accountChangeRequest,
10266
String clientUUID) {
@@ -143,24 +107,19 @@ public void updateModules(List<UserModuleReq> moduleUpdateRequest, String uuidSt
143107
}
144108

145109
UserModule module = userModuleMapper.of(req);
146-
module.setUser(user);
110+
module.setName(module.getName().toUpperCase());
147111

148112
if (module.getChapter() != null) {
149113
for (ChapterEntity chapter : module.getChapter()) {
150-
module.setName(module.getName().toUpperCase());
151-
chapter.setModule(module);
152-
153114
if (chapter.getCheckbox() != null) {
154115
for (CheckboxEntity cb : chapter.getCheckbox()) {
155-
cb.setChapter(chapter);
156116
cb.setUserUuid(uuid);
157117
}
158118
}
159119
}
160120
}
161121

162122
user.getModules().add(module);
163-
userModuleRepository.save(module);
164123
}
165124
userRepository.save(user);
166125
}

0 commit comments

Comments
 (0)