diff --git a/src/io/takima/agencymanagement/dao/TravelDao.java b/src/io/takima/agencymanagement/dao/TravelDao.java index 5937d37b3d75e12d635e8bbe3adc5e4b2b425d36..20e79dbb14734eb51a6ee302c42d413342d3002f 100644 --- a/src/io/takima/agencymanagement/dao/TravelDao.java +++ b/src/io/takima/agencymanagement/dao/TravelDao.java @@ -16,9 +16,8 @@ public class TravelDao { addTravelsToMap(); } - public Travel persist(Travel travel) { + public void save(Travel travel) { travels.put(travel.getId(), travel); - return travel; } public Travel update(Travel travel) { diff --git a/src/io/takima/agencymanagement/dao/UserDao.java b/src/io/takima/agencymanagement/dao/UserDao.java index 689edb65a789d6e8bb2b6cde15b36d51d27951cb..cec2f8ebe50390c524780f848e67be38a1a57c74 100644 --- a/src/io/takima/agencymanagement/dao/UserDao.java +++ b/src/io/takima/agencymanagement/dao/UserDao.java @@ -13,9 +13,8 @@ public class UserDao { private final Map<Long, User> users = Collections.synchronizedMap(new HashMap<>()); - public User persist(User user) { + public void save(User user) { users.put(user.getId(), user); - return user; } public User update(User user) { diff --git a/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java new file mode 100644 index 0000000000000000000000000000000000000000..11ed7a3de5a9236cdf9fa5908f9d9af88c624114 --- /dev/null +++ b/src/io/takima/agencymanagement/exception/AlreadyTravelSubscribedException.java @@ -0,0 +1,7 @@ +package io.takima.agencymanagement.exception; + +public class AlreadyTravelSubscribedException extends Exception { + public AlreadyTravelSubscribedException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/io/takima/agencymanagement/model/Travel.java b/src/io/takima/agencymanagement/model/Travel.java index e82d3cfecdaaa2dad87885dbfadff48bc1781b53..7c2e4bac4b26756bcd7736382d53110e0f8e5c9a 100644 --- a/src/io/takima/agencymanagement/model/Travel.java +++ b/src/io/takima/agencymanagement/model/Travel.java @@ -110,4 +110,8 @@ public class Travel { return stringBuilder.toString(); } + + public boolean hasAvailableCapacity(Set<User> participants, int capacity) { + return participants.size() < capacity; + } } diff --git a/src/io/takima/agencymanagement/service/TravelService.java b/src/io/takima/agencymanagement/service/TravelService.java index 37969c2c3a44d86e048ce96449bdf070b49a26cd..c5976d42ce746b8a01e5d81d8c5c7835dd7fd9f5 100644 --- a/src/io/takima/agencymanagement/service/TravelService.java +++ b/src/io/takima/agencymanagement/service/TravelService.java @@ -1,6 +1,7 @@ package io.takima.agencymanagement.service; import io.takima.agencymanagement.dao.TravelDao; +import io.takima.agencymanagement.exception.AlreadyTravelSubscribedException; import io.takima.agencymanagement.mapper.TravelDtoMapper; import io.takima.agencymanagement.model.Travel; import io.takima.agencymanagement.model.User; @@ -24,17 +25,17 @@ public class TravelService { } public TravelResponseDto create(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } public TravelResponseDto update(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } public TravelResponseDto delete(Travel travel) { - travelDao.persist(travel); + travelDao.save(travel); return fromTravel(travel); } @@ -49,6 +50,7 @@ public class TravelService { .toList(); } + public void applyDiscounts(Travel travel) { if (travel.getDiscounts().isEmpty()) { System.out.println("Aucune réduction n'est applicable sur ce voyage !"); @@ -61,19 +63,18 @@ public class TravelService { } } - public boolean subscribe(User user, Travel travel) throws Exception { + public void subscribe(User user, Travel travel) throws Exception { if (travel.getParticipants().contains(user) || travel.getWaitList().contains(user)) { //User already subscribed or in waitList - throw new Exception("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); + throw new AlreadyTravelSubscribedException("L'utilisateur est déjà inscrit ou en file d'attente pour ce voyage."); } if (travel.getParticipants().size() < travel.getCapacity()) { travel.getParticipants().add(user); - return true; + return; } travel.getWaitList().add(user); - return false; } public void unsubscribe(User user, Travel travel) { @@ -106,10 +107,11 @@ public class TravelService { List<Travel> travels = travelDao.findAll(); return travels.stream() - .filter(travel -> travel.getCapacity() > travel.getParticipants().size() && travel.getDestination().equals(destination)) + .filter(travel -> travel.hasAvailableCapacity(travel.getParticipants(), travel.getCapacity()) && travel.getDestination().equals(destination)) .toList(); } + public List<Travel> findInPriceRange(double minPrice, double maxPrice) { List<Travel> travels = travelDao.findAll(); diff --git a/src/io/takima/agencymanagement/service/UserService.java b/src/io/takima/agencymanagement/service/UserService.java index 08903f6c0eee79fc1fc9b8c05b6e17e14caa7d4e..458e0e56a0760fdc0058d990c21c26e1945058a3 100644 --- a/src/io/takima/agencymanagement/service/UserService.java +++ b/src/io/takima/agencymanagement/service/UserService.java @@ -14,17 +14,17 @@ public class UserService { UserDao userDao = new UserDao(); public UserResponseDto create(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); } public UserResponseDto update(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); } public UserResponseDto delete(User user) { - userDao.persist(user); + userDao.save(user); return fromUser(user); }