/
irazabav
/
software-design
Обзор
Документация
Войти
/
irazabav
/
software-design
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
finalProject/src/main/java/ru/sbrf/services/HotelServiceImpl.java
82 строки
2 KB
Irina Zbavnikova
fix comments
22 июн 2025, 12:28
22 июн 2025, 12:28
87a6e82
Код
Авторство
О чём код?
package ru.sbrf.services; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import ru.sbrf.model.exception.NoAvailableRoomsFound; import ru.sbrf.model.pet.Pet; import ru.sbrf.model.room.Room; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Optional; @Service @RequiredArgsConstructor public class HotelServiceImpl implements HotelService { private final RoomService roomService; private final PetService petService; @Override public Map<Room, List<Pet>> getAllRoomsWithPets() { return roomService.getAllRoomsWithPets(); } @Override public List<Pet> getAllPets() { return petService.getAllPets(); } @Override public Map<Pet, Room> checkInPetAutoAssign(Pet pet) { Optional<Room> room = roomService.getAllRooms().stream() .filter(r -> r.getFreeSpace() > 0) .sorted(Comparator.comparingInt(roomService::getTotalAggression) .thenComparing(Room::getFreeSpace, Comparator.reverseOrder()) .thenComparing(Room::getArea, Comparator.reverseOrder())) .findFirst(); if (room.isPresent()) { Room finalRoom = room.get(); finalRoom.addPet(pet); pet.setRoom(finalRoom); petService.savePet(pet); return Map.of(pet, finalRoom); } throw new NoAvailableRoomsFound("Отель переполнен"); } @Override public Pet checkInPet(Long petId, Long roomId) { Room room = roomService.findById(roomId); if (room.getFreeSpace() < 1) { throw new NoAvailableRoomsFound("Команата переполнена"); } return petService.checkInPet(petService.findById(petId), room); } @Override public void checkOutPet(Long id) { Pet pet = petService.findById(id); Room room = pet.getRoom(); room.getPets().remove(pet); roomService.saveOrUpdateRoom(room); petService.deletePet(pet); } @Override public Pet addPet(Pet pet) { return petService.savePet(pet); } @Override public Room addRoom(Room room) { return roomService.saveOrUpdateRoom(room); } @Override public void removeRoom(Long id) { roomService.removeRoom(id); } }