|
8 | 8 | import ksh.backendserver.group.entity.SubscriptionPosition; |
9 | 9 | import ksh.backendserver.group.repository.PositionRepository; |
10 | 10 | import ksh.backendserver.group.repository.SubscriptionPositionRepository; |
| 11 | +import ksh.backendserver.notification.entity.NotificationPreference; |
| 12 | +import ksh.backendserver.notification.repository.NotificationPreferenceRepository; |
11 | 13 | import ksh.backendserver.post.model.PostSkillRequirement; |
12 | 14 | import ksh.backendserver.skill.entity.Skill; |
13 | 15 | import ksh.backendserver.skill.entity.SubscriptionSkill; |
@@ -35,6 +37,7 @@ public class SubscriptionService { |
35 | 37 | private final SubscriptionSkillRepository subscriptionSkillRepository; |
36 | 38 | private final SubscriptionPositionRepository subscriptionPositionRepository; |
37 | 39 | private final SubscriptionCompanyRepository subscriptionCompanyRepository; |
| 40 | + private final NotificationPreferenceRepository notificationPreferenceRepository; |
38 | 41 |
|
39 | 42 | private final CompanyRepository companyRepository; |
40 | 43 | private final SkillRepository skillRepository; |
@@ -65,26 +68,38 @@ public void save(SubscriptionCreationRequestDto request, Long memberId) { |
65 | 68 | .build()) |
66 | 69 | .toList(); |
67 | 70 |
|
| 71 | + List<NotificationPreference> notificationPreferences = request.getNotificationTypes() |
| 72 | + .stream() |
| 73 | + .map(notificationType -> NotificationPreference.builder() |
| 74 | + .memberId(memberId) |
| 75 | + .notificationType(notificationType) |
| 76 | + .build()) |
| 77 | + .toList(); |
| 78 | + |
68 | 79 | subscriptionCompanyRepository.saveAll(companies); |
69 | 80 | subscriptionSkillRepository.saveAll(skills); |
70 | 81 | subscriptionPositionRepository.saveAll(positions); |
| 82 | + notificationPreferenceRepository.saveAll(notificationPreferences); |
71 | 83 | } |
72 | 84 |
|
73 | 85 | @Transactional |
74 | 86 | public void cancel(Long memberId) { |
75 | 87 | List<SubscriptionCompany> companies = subscriptionCompanyRepository.findByUserId(memberId); |
76 | 88 | List<SubscriptionSkill> skills = subscriptionSkillRepository.findByUserId(memberId); |
77 | 89 | List<SubscriptionPosition> positions = subscriptionPositionRepository.findByUserId(memberId); |
| 90 | + List<NotificationPreference> notificationPreferences = notificationPreferenceRepository.findByMemberId(memberId); |
78 | 91 |
|
79 | 92 | subscriptionCompanyRepository.deleteAll(companies); |
80 | 93 | subscriptionSkillRepository.deleteAll(skills); |
81 | 94 | subscriptionPositionRepository.deleteAll(positions); |
| 95 | + notificationPreferenceRepository.deleteAll(notificationPreferences); |
82 | 96 | } |
83 | 97 |
|
84 | 98 | public SubscriptionResponseDto findByMemberId(Long memberId) { |
85 | 99 | List<SubscriptionCompany> subscriptionCompanies = subscriptionCompanyRepository.findByUserId(memberId); |
86 | 100 | List<SubscriptionSkill> subscriptionSkills = subscriptionSkillRepository.findByUserId(memberId); |
87 | 101 | List<SubscriptionPosition> subscriptionPositions = subscriptionPositionRepository.findByUserId(memberId); |
| 102 | + List<NotificationPreference> notificationPreferences = notificationPreferenceRepository.findByMemberId(memberId); |
88 | 103 |
|
89 | 104 | List<Long> companyIds = subscriptionCompanies.stream() |
90 | 105 | .map(SubscriptionCompany::getCompanyId) |
@@ -114,7 +129,11 @@ public SubscriptionResponseDto findByMemberId(Long memberId) { |
114 | 129 | .map(Position::getName) |
115 | 130 | .toList(); |
116 | 131 |
|
117 | | - return SubscriptionResponseDto.of(companyNames, skillNames, positionNames); |
| 132 | + var notificationTypes = notificationPreferences.stream() |
| 133 | + .map(NotificationPreference::getNotificationType) |
| 134 | + .toList(); |
| 135 | + |
| 136 | + return SubscriptionResponseDto.of(companyNames, skillNames, positionNames, notificationTypes); |
118 | 137 | } |
119 | 138 |
|
120 | 139 | public Map<UserSubscription, List<PostSkillRequirement>> findMatchingSubscription( |
|
0 commit comments