Skip to content

Commit ac52d28

Browse files
committed
add-bookings. Ревью. Изменить в получении всех вещей пользователя массив бронирований на последнее завершенное и первое ближайшее бронирование.
1 parent 3bed9a2 commit ac52d28

File tree

5 files changed

+17
-17
lines changed

5 files changed

+17
-17
lines changed

src/main/java/ru/practicum/shareit/booking/service/BookingServiceImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import ru.practicum.shareit.exception.NotAccessException;
1414
import ru.practicum.shareit.exception.NotFoundException;
1515
import ru.practicum.shareit.exception.ValidationException;
16-
import ru.practicum.shareit.item.dto.ItemDto;
16+
import ru.practicum.shareit.item.dto.ItemByIdDto;
1717
import ru.practicum.shareit.item.mapper.ItemMapper;
1818
import ru.practicum.shareit.item.model.Item;
1919
import ru.practicum.shareit.item.service.ItemService;
@@ -100,7 +100,7 @@ public List<BookingDtoResponse> getBookingByUser(Long bookerId, State state) {
100100
public List<BookingDtoResponse> getBookingByItemsUser(Long userOwnerItemId, State state) {
101101
log.info("Запрос всех забронированных вещей пользователя с ID = " + userOwnerItemId);
102102
userService.getUserWithCheck(userOwnerItemId);
103-
List<Long> itemIds = itemService.getItemsByUserId(userOwnerItemId).stream().map(ItemDto::getId).toList();
103+
List<Long> itemIds = itemService.getItemsByUserId(userOwnerItemId).stream().map(ItemByIdDto::getId).toList();
104104
return switch (state) {
105105
case ALL -> bookingRepository.findAllByItemIdInOrderByStartDesc(itemIds).stream()
106106
.map(booking -> BookingMapper.toBookingDtoResponse(

src/main/java/ru/practicum/shareit/item/ItemController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class ItemController {
1919
private final String userIdHeader = "X-Sharer-User-Id";
2020

2121
@GetMapping
22-
public List<ItemDto> getItemsByUserId(@RequestHeader(userIdHeader) Long userId) {
22+
public List<ItemByIdDto> getItemsByUserId(@RequestHeader(userIdHeader) Long userId) {
2323
return itemService.getItemsByUserId(userId);
2424
}
2525

src/main/java/ru/practicum/shareit/item/dto/ItemDto.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import lombok.AllArgsConstructor;
66
import lombok.Data;
77
import lombok.NoArgsConstructor;
8-
import ru.practicum.shareit.booking.dto.BookingDtoResponse;
98

109
import java.util.List;
1110

@@ -23,13 +22,4 @@ public class ItemDto {
2322

2423
private List<CommentDto> comments;
2524

26-
private List<BookingDtoResponse> bookings;
27-
28-
public ItemDto(Long id, String name, String description, Boolean available, List<CommentDto> comments) {
29-
this.id = id;
30-
this.name = name;
31-
this.description = description;
32-
this.available = available;
33-
this.comments = comments;
34-
}
3525
}

src/main/java/ru/practicum/shareit/item/service/ItemService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import java.util.List;
99

1010
public interface ItemService {
11-
List<ItemDto> getItemsByUserId(Long userId);
11+
List<ItemByIdDto> getItemsByUserId(Long userId);
1212

1313
Item getItemWithCheck(Long itemId);
1414

src/main/java/ru/practicum/shareit/item/service/ItemServiceImpl.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class ItemServiceImpl implements ItemService {
3838

3939

4040
@Override
41-
public List<ItemDto> getItemsByUserId(Long userId) {
41+
public List<ItemByIdDto> getItemsByUserId(Long userId) {
4242
log.info("Поиск вещей пользователя с ID = {}", userId);
4343
User user = userService.getUserWithCheck(userId);
4444
List<Item> itemsByUserId = itemRepository.findAllByOwner(user);
@@ -47,8 +47,18 @@ public List<ItemDto> getItemsByUserId(Long userId) {
4747
.map(Item::getId)
4848
.toList());
4949
return itemsByUserId.stream()
50-
.map(ItemMapper::toItemDto)
51-
.peek(item -> item.setBookings(bookingsByIdItem.get(item.getId())))
50+
.map(item -> {
51+
List<BookingDtoResponse> bookings = bookingsByIdItem.getOrDefault(item.getId(), new ArrayList<>());
52+
BookingDtoResponse lastBooking = bookings.stream()
53+
.filter(booking -> booking.getStatus().equals(Status.APPROVED))
54+
.max(Comparator.comparing(BookingDtoResponse::getEnd))
55+
.orElse(null);
56+
BookingDtoResponse nextBooking = bookings.stream()
57+
.filter(booking -> booking.getStatus().equals(Status.APPROVED))
58+
.min(Comparator.comparing(BookingDtoResponse::getStart))
59+
.orElse(null);
60+
return ItemMapper.toItemByIdDto(item, nextBooking, lastBooking);
61+
})
5262
.toList();
5363
}
5464

0 commit comments

Comments
 (0)