Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,22 @@
import Capstone.AutoScheduler.global.domain.entity.Event;
import Capstone.AutoScheduler.global.domain.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {

List<Event> findAllByMember(Member member);
List<Event> findTop10ByMember_MemberIdOrderByCreatedAtDesc(Long memberId);

@Query("SELECT e FROM Event e WHERE e.member.id = :memberId " +
"AND ((:startDate <= e.endDate AND :endDate >= e.startDate))")
List<Event> findOverlappingEvents(@Param("memberId") Long memberId,
@Param("startDate") LocalDateTime startDate,
@Param("endDate") LocalDateTime endDate);
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@RequiredArgsConstructor
@Transactional
Expand All @@ -27,6 +29,12 @@ public class EventCommandServiceImpl implements EventCommandService {
public Event createEvent(Long memberId, EventRequestDTO.CreateEventRequestDTO request) {
Member member = findMemberById(memberId);

// 겹치는 일정 확인
List<Event> overlappingEvents = eventRepository.findOverlappingEvents(memberId, request.getStartDate(), request.getEndDate());
if (!overlappingEvents.isEmpty()) {
throw new IllegalArgumentException("이미 해당 시간에 다른 일정이 존재합니다.");
}

Event newEvent = EventConverter.toEvent(request);
newEvent.setMember(member);

Expand Down
Loading