Skip to content

Commit e3363bf

Browse files
committed
fix27
1 parent ba72e31 commit e3363bf

3 files changed

Lines changed: 78 additions & 6 deletions

File tree

ewm-service/src/main/java/ru/practicum/ewm/event/controller/AdminEventController.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package ru.practicum.ewm.event.controller;
22

33
import jakarta.validation.Valid;
4+
import jakarta.validation.constraints.Positive;
5+
import jakarta.validation.constraints.PositiveOrZero;
46
import lombok.RequiredArgsConstructor;
7+
import org.springframework.format.annotation.DateTimeFormat;
58
import org.springframework.validation.annotation.Validated;
69
import org.springframework.web.bind.annotation.*;
710
import ru.practicum.ewm.event.dto.AdminEventSearchParams;
811
import ru.practicum.ewm.event.dto.EventFullDto;
912
import ru.practicum.ewm.event.dto.UpdateEventAdminRequest;
1013
import ru.practicum.ewm.event.service.EventService;
1114

15+
import java.time.LocalDateTime;
1216
import java.util.List;
1317

1418
@RestController
@@ -18,8 +22,27 @@
1822
public class AdminEventController {
1923
private final EventService eventService;
2024

25+
// @GetMapping
26+
// public List<EventFullDto> getEvents(@Valid @ModelAttribute AdminEventSearchParams params) {
27+
// return eventService.getEventsForAdmin(params);
28+
// }
29+
2130
@GetMapping
22-
public List<EventFullDto> getEvents(@Valid @ModelAttribute AdminEventSearchParams params) {
31+
public List<EventFullDto> getEvents(@RequestParam(required = false) List<Long> users,
32+
@RequestParam(required = false) List<String> states,
33+
@RequestParam(required = false) List<Long> categories,
34+
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime rangeStart,
35+
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime rangeEnd,
36+
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
37+
@RequestParam(defaultValue = "10") @Positive int size) {
38+
AdminEventSearchParams params = new AdminEventSearchParams();
39+
params.setUsers(users);
40+
params.setStates(states);
41+
params.setCategories(categories);
42+
params.setRangeStart(rangeStart);
43+
params.setRangeEnd(rangeEnd);
44+
params.setFrom(from);
45+
params.setSize(size);
2346
return eventService.getEventsForAdmin(params);
2447
}
2548

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

Lines changed: 18 additions & 3 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,15 +16,29 @@ public interface EventRepository extends JpaRepository<Event, Long> {
1516

1617
boolean existsByCategoryId(Long categoryId);
1718

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+
1833
@Query("SELECT e FROM Event e " +
1934
"WHERE (:users IS NULL OR e.initiator.id IN :users) " +
2035
"AND (:states IS NULL OR e.state IN :states) " +
2136
"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) " +
37+
"AND (:rangeStart IS NULL OR e.eventDate >= :rangeStart) " +
38+
"AND (:rangeEnd IS NULL OR e.eventDate <= :rangeEnd) " +
2439
"ORDER BY e.id")
2540
Page<Event> searchEventsAdmin(@Param("users") List<Long> users,
26-
@Param("states") List<String> states,
41+
@Param("states") List<EventState> states, //enum
2742
@Param("categories") List<Long> categories,
2843
@Param("rangeStart") LocalDateTime rangeStart,
2944
@Param("rangeEnd") LocalDateTime rangeEnd,

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

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.springframework.data.domain.PageRequest;
88
import org.springframework.data.domain.Pageable;
99
import org.springframework.data.domain.Sort;
10-
import org.springframework.data.jpa.domain.Specification;
1110
import org.springframework.stereotype.Service;
1211
import org.springframework.transaction.annotation.Transactional;
1312
import ru.practicum.ewm.category.model.Category;
@@ -103,6 +102,33 @@ public EventFullDto updateUserEvent(Long userId, Long eventId, UpdateEventUserRe
103102
return EventMapper.toEventFullDto(event, 0L, 0L);
104103
}
105104

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+
106132
@Override
107133
@Transactional(readOnly = true)
108134
public List<EventFullDto> getEventsForAdmin(AdminEventSearchParams params) {
@@ -112,10 +138,18 @@ public List<EventFullDto> getEventsForAdmin(AdminEventSearchParams params) {
112138
throw new IllegalArgumentException("Параметры from и size должны быть > 0");
113139
}
114140

141+
// Преобразуем строки в enum
142+
List<EventState> stateEnums = null;
143+
if (params.getStates() != null && !params.getStates().isEmpty()) {
144+
stateEnums = params.getStates().stream()
145+
.map(EventState::valueOf)
146+
.collect(Collectors.toList());
147+
}
148+
115149
Pageable pageable = PageRequest.of(from / size, size, Sort.by("id"));
116150
Page<Event> page = eventRepository.searchEventsAdmin(
117151
params.getUsers(),
118-
params.getStates(),
152+
stateEnums,
119153
params.getCategories(),
120154
params.getRangeStart(),
121155
params.getRangeEnd(),

0 commit comments

Comments
 (0)