Skip to content

Commit 6c78d74

Browse files
committed
fix30
1 parent fc27a44 commit 6c78d74

2 files changed

Lines changed: 54 additions & 7 deletions

File tree

ewm-service/src/main/java/ru/practicum/ewm/event/repository/EventRepository.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.data.jpa.repository.Query;
77
import org.springframework.data.repository.query.Param;
88
import ru.practicum.ewm.event.model.Event;
9+
import ru.practicum.ewm.event.model.EventState;
910

1011
import java.time.LocalDateTime;
1112
import java.util.List;
@@ -15,21 +16,34 @@ public interface EventRepository extends JpaRepository<Event, Long> {
1516

1617
boolean existsByCategoryId(Long categoryId);
1718

18-
@Query("SELECT e FROM Event e " +
19+
// @Query("SELECT e FROM Event e " +
20+
// "WHERE (:users IS NULL OR e.initiator.id IN :users) " +
21+
// "AND (:states IS NULL OR e.state IN :states) " +
22+
// "AND (:categories IS NULL OR e.category.id IN :categories) " +
23+
// "AND (CAST(:rangeStart AS timestamp) IS NULL OR e.eventDate >= :rangeStart) " +
24+
// "AND (CAST(:rangeEnd AS timestamp) IS NULL OR e.eventDate <= :rangeEnd) " +
25+
// "ORDER BY e.id")
26+
// Page<Event> searchEventsAdmin(@Param("users") List<Long> users,
27+
// @Param("states") List<String> states,
28+
// @Param("categories") List<Long> categories,
29+
// @Param("rangeStart") LocalDateTime rangeStart,
30+
// @Param("rangeEnd") LocalDateTime rangeEnd,
31+
// Pageable pageable);
32+
33+
@Query("SELECT DISTINCT e FROM Event e " +
34+
"LEFT JOIN FETCH e.category " +
35+
"LEFT JOIN FETCH e.initiator " +
1936
"WHERE (:users IS NULL OR e.initiator.id IN :users) " +
2037
"AND (:states IS NULL OR e.state IN :states) " +
2138
"AND (:categories IS NULL OR e.category.id IN :categories) " +
22-
"AND (CAST(:rangeStart AS timestamp) IS NULL OR e.eventDate >= :rangeStart) " +
23-
"AND (CAST(:rangeEnd AS timestamp) IS NULL OR e.eventDate <= :rangeEnd) " +
24-
"ORDER BY e.id")
39+
"AND (CAST(:rangeStart AS timestamp) IS NULL OR CAST(:rangeEnd AS timestamp) IS NULL OR e.eventDate BETWEEN :rangeStart AND :rangeEnd)")
2540
Page<Event> searchEventsAdmin(@Param("users") List<Long> users,
26-
@Param("states") List<String> states,
41+
@Param("states") List<EventState> states,
2742
@Param("categories") List<Long> categories,
2843
@Param("rangeStart") LocalDateTime rangeStart,
2944
@Param("rangeEnd") LocalDateTime rangeEnd,
3045
Pageable pageable);
3146

32-
3347
@Query("SELECT e FROM Event e " +
3448
"WHERE e.state = 'PUBLISHED' " +
3549
"AND (:text IS NULL OR :text = '' OR " +

ewm-service/src/main/java/ru/practicum/ewm/event/service/EventServiceImpl.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,33 @@ public EventFullDto updateUserEvent(Long userId, Long eventId, UpdateEventUserRe
102102
return EventMapper.toEventFullDto(event, 0L, 0L);
103103
}
104104

105+
// @Override
106+
// @Transactional(readOnly = true)
107+
// public List<EventFullDto> getEventsForAdmin(AdminEventSearchParams params) {
108+
// int from = params.getFrom();
109+
// int size = params.getSize();
110+
// if (size <= 0 || from < 0) {
111+
// throw new IllegalArgumentException("Параметры from и size должны быть > 0");
112+
// }
113+
//
114+
// Pageable pageable = PageRequest.of(from / size, size, Sort.by("id"));
115+
// Page<Event> page = eventRepository.searchEventsAdmin(
116+
// params.getUsers(),
117+
// params.getStates(),
118+
// params.getCategories(),
119+
// params.getRangeStart(),
120+
// params.getRangeEnd(),
121+
// pageable);
122+
//
123+
// List<Event> events = page.getContent();
124+
// List<Long> eventIds = events.stream().map(Event::getId).collect(Collectors.toList());
125+
// Map<Long, Long> confirmedRequestsMap = eventRepository.countConfirmedRequestsBatch(eventIds);
126+
//
127+
// return events.stream()
128+
// .map(event -> EventMapper.toEventFullDto(event, 0L, confirmedRequestsMap.getOrDefault(event.getId(), 0L)))
129+
// .collect(Collectors.toList());
130+
// }
131+
105132
@Override
106133
@Transactional(readOnly = true)
107134
public List<EventFullDto> getEventsForAdmin(AdminEventSearchParams params) {
@@ -110,11 +137,17 @@ public List<EventFullDto> getEventsForAdmin(AdminEventSearchParams params) {
110137
if (size <= 0 || from < 0) {
111138
throw new IllegalArgumentException("Параметры from и size должны быть > 0");
112139
}
140+
List<EventState> stateEnums = null;
141+
if (params.getStates() != null && !params.getStates().isEmpty()) {
142+
stateEnums = params.getStates().stream()
143+
.map(EventState::valueOf)
144+
.collect(Collectors.toList());
145+
}
113146

114147
Pageable pageable = PageRequest.of(from / size, size, Sort.by("id"));
115148
Page<Event> page = eventRepository.searchEventsAdmin(
116149
params.getUsers(),
117-
params.getStates(),
150+
stateEnums,
118151
params.getCategories(),
119152
params.getRangeStart(),
120153
params.getRangeEnd(),

0 commit comments

Comments
 (0)