Skip to content

Commit

Permalink
✨ feat: 유저 생일 업데이트 시 이벤트 추가하도록 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
woosung1223 committed Sep 30, 2024
1 parent e628c99 commit 525529a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
38 changes: 31 additions & 7 deletions src/main/java/slvtwn/khu/toyouserver/application/UserService.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
package slvtwn.khu.toyouserver.application;

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import slvtwn.khu.toyouserver.common.response.ResponseType;
import slvtwn.khu.toyouserver.domain.Event;
import slvtwn.khu.toyouserver.domain.EventType;
import slvtwn.khu.toyouserver.domain.Group;
import slvtwn.khu.toyouserver.domain.Member;
import slvtwn.khu.toyouserver.domain.User;
import slvtwn.khu.toyouserver.dto.GroupRequest;
import slvtwn.khu.toyouserver.dto.UserResponse;
import slvtwn.khu.toyouserver.dto.UserUpdateRequest;
import slvtwn.khu.toyouserver.exception.ToyouException;
import slvtwn.khu.toyouserver.persistance.EventRepository;
import slvtwn.khu.toyouserver.persistance.GroupRepository;
import slvtwn.khu.toyouserver.persistance.MemberRepository;
import slvtwn.khu.toyouserver.persistance.UserRepository;
Expand All @@ -21,9 +27,12 @@
@Transactional(readOnly = true)
public class UserService {

private static final int PERIOD_UPPER_BOUND = 100;

private final UserRepository userRepository;
private final MemberRepository memberRepository;
private final GroupRepository groupRepository;
private final EventRepository eventRepository;

public UserResponse getProfile(Long userId) {
User user = userRepository.findById(userId)
Expand Down Expand Up @@ -65,15 +74,30 @@ private List<UserResponse> findUsersWithSpecificGroup(User user, String search,

@Transactional
public void updateUser(Long userId, UserUpdateRequest request) {
User foundUser = userRepository.findById(userId)
User user = userRepository.findById(userId)
.orElseThrow(() -> new ToyouException(ResponseType.USER_NOT_FOUND));
User updatedUser = userRepository.findById(request.id())
.map(each -> each.updateInfo(request.name(), request.birthday(),
request.introduction(), request.imageUrl()))
.orElseThrow(() -> new ToyouException(ResponseType.BAD_REQUEST));

updateUserGroups(foundUser, request.groups());
userRepository.save(updatedUser);
user.updateInfo(request.name(), request.birthday(), request.introduction(), request.imageUrl());
createBirthdayEvents(user);
updateUserGroups(user, request.groups());
}

private void createBirthdayEvents(User user) {
eventRepository.deleteAllByUserIs(user);
List<Event> events = generatePeriodicalBirthdayEvents(user);
eventRepository.saveAll(events);
}

private static List<Event> generatePeriodicalBirthdayEvents(User user) {
List<Event> events = new ArrayList<>();
LocalDate birthday = user.getBirthday();

for (int yearAfter = 1; yearAfter <= PERIOD_UPPER_BOUND; yearAfter++) {
LocalDate birthdayYearAfter = birthday.plus(yearAfter, ChronoUnit.YEARS);
events.add(new Event("생일", birthdayYearAfter, EventType.BIRTHDAY,
"오늘 생일이에요!", user));
}
return events;
}

private void updateUserGroups(User user, List<GroupRequest> groupRequests) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import slvtwn.khu.toyouserver.domain.Event;
import slvtwn.khu.toyouserver.domain.User;

public interface EventRepository extends JpaRepository<Event, Long> {

List<Event> findEventsByDateGreaterThanEqual(LocalDate date);
List<Event> findEventsByDate(LocalDate date);

void deleteAllByUserIs(User user);
}

0 comments on commit 525529a

Please sign in to comment.