diff --git a/old/done/back-end/.gitignore b/resources/solution/back-end/.gitignore similarity index 100% rename from old/done/back-end/.gitignore rename to resources/solution/back-end/.gitignore diff --git a/old/done/back-end/config.js b/resources/solution/back-end/config.js similarity index 100% rename from old/done/back-end/config.js rename to resources/solution/back-end/config.js diff --git a/old/done/back-end/package-lock.json b/resources/solution/back-end/package-lock.json similarity index 100% rename from old/done/back-end/package-lock.json rename to resources/solution/back-end/package-lock.json diff --git a/old/done/back-end/package.json b/resources/solution/back-end/package.json similarity index 100% rename from old/done/back-end/package.json rename to resources/solution/back-end/package.json diff --git a/old/done/back-end/server.js b/resources/solution/back-end/server.js similarity index 100% rename from old/done/back-end/server.js rename to resources/solution/back-end/server.js diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/Main.java b/resources/solution/day-1/src/io/takima/agencymanagement/Main.java deleted file mode 100644 index cfdacf88418be5c2404e2ffae74ba5291d8ec6dc..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/Main.java +++ /dev/null @@ -1,166 +0,0 @@ -package io.takima.agencymanagement; - -import io.takima.agencymanagement.model.Airport; -import io.takima.agencymanagement.model.Discount; -import io.takima.agencymanagement.model.RestaurentOffer; -import io.takima.agencymanagement.model.PercentDiscount; -import io.takima.agencymanagement.model.Travel; -import io.takima.agencymanagement.model.User; -import io.takima.agencymanagement.service.TravelService; -import io.takima.agencymanagement.utils.AirportManager; - -import java.time.Duration; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Queue; -import java.util.Set; - -public class Main { - - public static void main(String[] args) { - - TravelService travelService = new TravelService(); - //Update Main - System.out.printf("Agency App \n"); - - User user1 = new User(0, "John", "Doe", "john.doe@gmail.com"); - User user2 = new User(1, "John", "Doe", "john.doe@gmail.com"); - User user3 = new User(2, "John", "Doe", "john.doe@gmail.com"); - User user4 = new User(3, "John", "Doe", "john.doe@gmail.com"); - User user5 = new User(4, "John", "Doe", "john.doe@gmail.com"); - User user6 = new User(5, "Mat", "Doe", "mat.doe@gmail.com"); - - //Add 50% discount - List<Discount> discounts = new ArrayList<>(); - discounts.add(new PercentDiscount(50)); - - //Add participant set - Set<User> users = Set.of(user1, user2, user3, user4, user5); - Set<User> participants = new HashSet<>(users); - - // Bug without overriding equals and hashCode - User sameUser1 = new User(0, "Same", "User", "sameuser@gmail.com"); - User sameUser2 = new User(0, "Same", "User", "sameuser@gmail.com"); - - Set<User> sameUsers = new HashSet<>(); - try { - sameUsers = Set.of(sameUser1, sameUser2); - } catch (IllegalArgumentException e) { - System.out.println(e.getMessage()); - } - Travel travelWithBug = new Travel(0L, null, Instant.now(), Instant.now().plusSeconds(1), - null, null, null, 0, 0, null, - sameUsers, null); - - System.out.println(travelWithBug.getParticipants()); - - //Add waitList - Queue<User> waitList = new ArrayDeque<>(); - waitList.add(user6); - - // Log RestaurentOffer details - RestaurentOffer offer = new RestaurentOffer( - 0L, - 4, - "description", - 2, - Instant.now().plusSeconds(10), - 2, - Instant.now() - ); - System.out.println(offer.getDetails()); - - //Create firstTravel - Travel firstTravel = new Travel(0L, "to Japan", Instant.now(), Instant.now().plusSeconds(86400), Airport.PARIS_CHARLES_DE_GAULLE, Airport.TOKYO_HANEDA, "Tokyo", 5, 2000, discounts, participants, waitList); - - //Apply discount - applyDiscounts(firstTravel); - - //Log user information - System.out.println(user1); - //Log travel information - System.out.println(firstTravel); - - //Subscribe user using TravelService and get an exception - try { - travelService.subscribe(user1, firstTravel); - } catch (Exception e) { - System.out.println(e.getMessage()); - } - - System.out.println("Utilisateurs en file d'attente : " + firstTravel.getWaitList().element()); - - //Unsubscribe a participant then check the first one in the waitList is subscribed - travelService.unsubscribe(user1, firstTravel); - - for (User participant : firstTravel.getParticipants()) { - System.out.println(participant); - } - - //Log CDG airport timeZone - System.out.println(AirportManager.getTimeZone(Airport.PARIS_CHARLES_DE_GAULLE)); - - //Use computeTravelDuration - String dateStr = "26/04/2023, 12:10"; - String dateStr2 = "27/04/2023, 06:36"; - - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy, HH:mm"); - LocalDateTime localDateTime1 = LocalDateTime.parse(dateStr, formatter); - LocalDateTime localDateTime2 = LocalDateTime.parse(dateStr2, formatter); - - - Instant instant1 = localDateTime1.atZone(ZoneId.of(AirportManager.getTimeZone(Airport.PARIS_CHARLES_DE_GAULLE))).toInstant(); - Instant instant2 = localDateTime2.atZone(ZoneId.of(AirportManager.getTimeZone(Airport.TOKYO_HANEDA))).toInstant(); - - firstTravel.setDepartureDate(instant1); - firstTravel.setArrivalDate(instant2); - - System.out.println(travelService.computeTravelDuration(firstTravel)); - - //Use adjustDates - travelService.adjustDates(Duration.ofHours(5), firstTravel); - //Log it in the appropriate zoneTime - System.out.println(firstTravel.getDepartureDate().atZone(ZoneId.of(AirportManager.getTimeZone(firstTravel.getDepartureAirport())))); - - //Find available ones - List<Travel> availableTravels = travelService.findAvailableForDestination("Paris"); - - } - - //Before services - public static void applyDiscounts(Travel travel) { - if (travel.getDiscounts().isEmpty()) { - System.out.println("Aucune réduction n'est applicable sur ce voyage !"); - } else { - for (Discount discount : travel.getDiscounts()) { - double discountedPrice = discount.apply(travel.getPrice()); - System.out.println("Prix après réduction : " + discountedPrice); - } - } - } - - public static boolean subscribe(User user, Travel travel) { - - if (travel.getParticipants().size() < travel.getCapacity()) { - travel.getParticipants().add(user); - return true; - } - travel.getWaitList().add(user); - return false; - } - - public void unsubscribe(User user, Travel travel) { - - travel.getParticipants().remove(user); - - if (!travel.getWaitList().isEmpty()) { - travel.getParticipants().add(travel.getWaitList().poll()); - } - } -} \ No newline at end of file diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java b/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java deleted file mode 100644 index 5937d37b3d75e12d635e8bbe3adc5e4b2b425d36..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/dao/TravelDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package io.takima.agencymanagement.dao; - -import io.takima.agencymanagement.model.Airport; -import io.takima.agencymanagement.model.Discount; -import io.takima.agencymanagement.model.Travel; -import io.takima.agencymanagement.model.User; - -import java.time.Instant; -import java.util.*; - -public class TravelDao { - - private final Map<Long, Travel> travels = Collections.synchronizedMap(new HashMap<>()); - - public TravelDao() { - addTravelsToMap(); - } - - public Travel persist(Travel travel) { - travels.put(travel.getId(), travel); - return travel; - } - - public Travel update(Travel travel) { - if (travels.containsKey(travel.getId())) { - travels.put(travel.getId(), travel); - return travel; - } - return null; - } - - public void delete(Long travelId) { - travels.remove(travelId); - } - - public Travel findById(Long travelId) { - return travels.get(travelId); - } - - public List<Travel> findAll() { - return new ArrayList<>(travels.values()); - } - - public void addTravelsToMap() { - List<Discount> emptyDiscountsList = new ArrayList<>(); - Queue<User> emptyWaitList = new LinkedList<>(); - Set<User> emptyParticipantsList = new HashSet<>(); - Set<User> participantsList = new HashSet<>(); - participantsList.add(new User(10, "Jean", "Michel", "j.m@gamil.com")); - - Travel travel1 = new Travel(1, "Trip to Paris", Instant.now(), Instant.now().plusSeconds(3600), Airport.NEW_YORK_NEWARK, Airport.PARIS_ORLY, "Paris",50, 500.0, emptyDiscountsList, emptyParticipantsList, emptyWaitList); - Travel travel2 = new Travel(2, "Holiday in Tokyo", Instant.now(), Instant.now().plusSeconds(7200), Airport.PARIS_CHARLES_DE_GAULLE, Airport.TOKYO_HANEDA,"Tokyo", 40, 800.0, emptyDiscountsList, emptyParticipantsList, emptyWaitList); - Travel travel3 = new Travel(3, "Exploring Rome", Instant.now(), Instant.now().plusSeconds(10800), Airport.TOKYO_NARITA, Airport.NEW_YORK_JFK, "New York", 30, 600.0, emptyDiscountsList, participantsList, emptyWaitList); - - travels.put(travel1.getId(), travel1); - travels.put(travel2.getId(), travel2); - travels.put(travel3.getId(), travel3); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java b/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java deleted file mode 100644 index 689edb65a789d6e8bb2b6cde15b36d51d27951cb..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/dao/UserDao.java +++ /dev/null @@ -1,54 +0,0 @@ -package io.takima.agencymanagement.dao; - -import io.takima.agencymanagement.model.User; - -import java.util.*; - -public class UserDao { - - public UserDao() { - //add data - addUsersToMap(); - } - - private final Map<Long, User> users = Collections.synchronizedMap(new HashMap<>()); - - public User persist(User user) { - users.put(user.getId(), user); - return user; - } - - public User update(User user) { - if (users.containsKey(user.getId())) { - users.put(user.getId(), user); - return user; - } - return null; - } - - public void delete(Long userId) { - users.remove(userId); - } - - public User findById(Long userId) { - return users.get(userId); - } - - public List<User> findAll() { - return new ArrayList<>(users.values()); - } - - public void addUsersToMap() { - User user1 = new User(1, "John", "Doe", "john@example.com"); - User user2 = new User(2, "Jane", "Smith", "jane@example.com"); - User user3 = new User(3, "Alice", "Johnson", "alice@example.com"); - User user4 = new User(4, "Bob", "Williams", "bob@example.com"); - User user5 = new User(5, "Eva", "Brown", "eva@example.com"); - - users.put(user1.getId(), user1); - users.put(user2.getId(), user2); - users.put(user3.getId(), user3); - users.put(user4.getId(), user4); - users.put(user5.getId(), user5); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java deleted file mode 100644 index 4ea0ed96b0e420860885dda78df81801a101023f..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/TravelDtoMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.takima.agencymanagement.mapper; - -import io.takima.agencymanagement.model.Travel; -import io.takima.agencymanagement.presentation.responsedto.TravelResponseDto; -import io.takima.agencymanagement.utils.AirportManager; - -import java.time.ZoneId; -import java.time.ZonedDateTime; - -public class TravelDtoMapper { - - public static TravelResponseDto fromTravel(Travel travel) { - ZonedDateTime zonedDepartureDate = travel.getDepartureDate() - .atZone(ZoneId.of(AirportManager.timeZone.get(travel.getDepartureAirport()))); - ZonedDateTime zonedArrivalDate = travel.getDepartureDate() - .atZone(ZoneId.of(AirportManager.timeZone.get(travel.getArrivalAirport()))); - - return new TravelResponseDto(travel.getName(), travel.getDestination(), travel.getDepartureAirport(), travel.getArrivalAirport(), zonedDepartureDate, zonedArrivalDate, travel.getPrice()); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java b/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java deleted file mode 100644 index d3351a9a6ca8a5b3aec35f1f44d80a9de6790e13..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/mapper/UserDtoMapper.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.takima.agencymanagement.mapper; - -import io.takima.agencymanagement.model.User; -import io.takima.agencymanagement.presentation.responsedto.UserResponseDto; - -public class UserDtoMapper { - - public static UserResponseDto fromUser(User user) { - - return new UserResponseDto(user.getFirstName(), user.getLastName(), user.getContact()); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java deleted file mode 100644 index e2eabb8bf21b6055a42576ff5cc34ee550eecc1d..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/Airport.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.takima.agencymanagement.model; - -public enum Airport { - - PARIS_CHARLES_DE_GAULLE("CDG"), - PARIS_ORLY("ORY"), - NEW_YORK_JFK("JFK"), - NEW_YORK_NEWARK("EWR"), - NEW_YORK_LAGUARDIA("LGA"), - TOKYO_NARITA("NRT"), - TOKYO_HANEDA("HND"); - - private final String acronym; - - Airport(String acronym){ - this.acronym = acronym; - } - - public String getAcronym() { - return acronym; - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java deleted file mode 100644 index 4ab3d08a9724e1cae5161b407d8a12fd505a297f..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/Discount.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.takima.agencymanagement.model; - -public interface Discount { - public double apply(double price); -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java deleted file mode 100644 index cea6ddb24b75fa1ee8daf748cec537577af747e3..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/HotelOffer.java +++ /dev/null @@ -1,36 +0,0 @@ -package io.takima.agencymanagement.model; - -import java.time.Instant; - -public class HotelOffer extends Offer { - private boolean isBreakfastIncluded; - private int nbOfAvailableDays; - - public HotelOffer( - long id, - double score, - String description, - int nbOfReviews, - boolean isBreakfastIncluded, - int nbOfAvailableDays - ) { - super(id, score, description, nbOfReviews); - this.isBreakfastIncluded = isBreakfastIncluded; - this.nbOfAvailableDays = nbOfAvailableDays; - } - - @Override - public boolean isValid() { - return super.isValid() && - nbOfAvailableDays > 0; - } - - public String getDetails() { - return "Le nombre de jours valaibles " + - nbOfAvailableDays + - ". Petit déjeuner est " + - (isBreakfastIncluded ? "" : "non") + - "inclu"; - } - -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java deleted file mode 100644 index 3b30b57b43b8971f0488772aeb6a60273d6f6e1f..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/Offer.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.takima.agencymanagement.model; - -import java.time.Instant; - -public abstract class Offer { - protected long id; - protected double score; - protected String description; - protected int nbOfReviews; - protected abstract String getDetails(); - - protected Offer(long id, double score, String description, int nbOfReviews) { - this.id = id; - this.score = score; - this.description = description; - this.nbOfReviews = nbOfReviews; - } - - protected boolean isValid() { - return score >= 0 && - score <= 5 && - description != null && - !description.isBlank() && - nbOfReviews >= 0; - } - -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java deleted file mode 100644 index 04876ada65f7343d7d6dc777561ffd256984c963..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/PercentDiscount.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.takima.agencymanagement.model; - -public class PercentDiscount implements Discount{ - - private double percent; - - public PercentDiscount(int percent) { - this.percent = percent; - } - - @Override - public double apply(double price) { - return price * (1 - (percent / 100)); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java deleted file mode 100644 index f203bae445dd1399635dcf8ec73686ea787a5d37..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/RestaurentOffer.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.takima.agencymanagement.model; - -import java.time.Instant; - -public class RestaurentOffer extends Offer { - private int nbOfStars; - private int nbOfPerson; - - public RestaurentOffer( - long id, - double score, - String description, - int nbOfReviews, - Instant expiration, - int nbOfStars, - int nbOfPerson - ) { - super(id, score, description, nbOfReviews); - this.nbOfStars = nbOfStars; - this.nbOfPerson = nbOfPerson; - } - - @Override - public boolean isValid() { - return super.isValid() && - nbOfPerson > 0 && - nbOfStars >0; - } - - public String getDetails() { - return "La reservation est dans un restaurant de %d étoiles, pour %s personnes".formatted(nbOfStars, nbOfPerson); - } - -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java deleted file mode 100644 index af92355f057308640bef70ed522017922a2db8e8..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/Travel.java +++ /dev/null @@ -1,158 +0,0 @@ -package io.takima.agencymanagement.model; - -import java.time.Instant; -import java.util.List; -import java.util.Queue; -import java.util.Set; - -public class Travel { - - private long id; - private String name; - private Instant departureDate; - private Instant arrivalDate; - private Airport departureAirport; - private Airport arrivalAirport; - private String destination; - private int capacity; - private double price; - private List<Discount> discounts; - - private Set<User> participants; - - private Queue<User> waitList; - - public Travel(long id, String name, Instant departureDate, Instant arrivalDate, Airport departureAirport, Airport arrivalAirport, String destination, int capacity, double price, List<Discount> discounts, Set<User> participants, Queue<User> waitList) { - if(departureDate.isAfter(arrivalDate)){ - throw new IllegalArgumentException("Date de départ et après la date d'arrivée"); - } - - this.id = id; - this.name = name; - this.departureDate =departureDate; - this.arrivalDate = arrivalDate; - this.departureAirport = departureAirport; - this.arrivalAirport = arrivalAirport; - this.destination = destination; - this.capacity = capacity; - this.price = price; - this.discounts = discounts; - this.participants = participants; - this.waitList = waitList; - } - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Instant getDepartureDate() { - return departureDate; - } - - public void setDepartureDate(Instant departureDate) { - this.departureDate = departureDate; - } - - public Instant getArrivalDate() { - return arrivalDate; - } - - public void setArrivalDate(Instant arrivalDate) { - this.arrivalDate = arrivalDate; - } - - public Airport getDepartureAirport() { - return departureAirport; - } - - public void setDepartureAirport(Airport departureAirport) { - this.departureAirport = departureAirport; - } - - public Airport getArrivalAirport() { - return arrivalAirport; - } - - public void setArrivalAirport(Airport arrivalAirport) { - this.arrivalAirport = arrivalAirport; - } - - public String getDestination() { - return destination; - } - - public void setDestination(String destination) { - this.destination = destination; - } - - public int getCapacity() { - return capacity; - } - - public void setCapacity(int capacity) { - this.capacity = capacity; - } - - public double getPrice() { - return price; - } - - public void setPrice(double price) { - this.price = price; - } - - public List<Discount> getDiscounts() { - return discounts; - } - - public void setDiscounts(List<Discount> discounts) { - this.discounts = discounts; - } - - public Set<User> getParticipants() { - return participants; - } - - public void setParticipants(Set<User> participants) { - this.participants = participants; - } - - public Queue<User> getWaitList() { - return waitList; - } - - public void setWaitList(Queue<User> waitList) { - this.waitList = waitList; - } - - @Override - public String toString() { - - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("Le voyage '") - .append(name) - .append("' à destination de ") - .append(destination) - .append(" a ") - .append(participants.size()) - .append(" voyageurs inscrits qui sont respectivement:\n"); - - for (User participant : participants) { - stringBuilder.append("- ").append(participant.getFirstName()).append(participant.getLastName()).append("\n"); - } - - return stringBuilder.toString(); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java deleted file mode 100644 index b8393a81002ca1b1b7e98998be3a0836b65f269f..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/User.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.takima.agencymanagement.model; - -import java.util.Objects; - -public class User { - - private long id; - private String firstName; - private String lastName; - private String contact; - - public User(long id, String firstName, String lastName, String contact) { - this.id = id; - this.firstName = firstName; - this.lastName = lastName; - this.contact = contact; - } - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getContact() { - return contact; - } - - public void setContact(String contact) { - this.contact = contact; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - User user = (User) o; - return id == user.id; - } - - @Override - public int hashCode() { - return Objects.hash(id); - } - - @Override - public String toString() { - return "Utilisateur " + - firstName + " " + - lastName + " " + - ", contact '" + contact + "\n" - ; - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java b/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java deleted file mode 100644 index 61ea2fc067cbc3d6c70bba73c62c50d318b14e25..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/model/ValueDiscount.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.takima.agencymanagement.model; - -public class ValueDiscount implements Discount{ - - private double value; - - public ValueDiscount(double value) { - this.value = value; - } - - @Override - public double apply(double price) { - return price - value; - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java deleted file mode 100644 index 38a2048c1bb1b5b6c4d46dade6efedb6667ef64a..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/TravelResponseDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.takima.agencymanagement.presentation.responsedto; - -import io.takima.agencymanagement.model.Airport; - -import java.time.ZonedDateTime; - -public record TravelResponseDto( - String name, - String destination, - Airport departureAirport, - Airport destinationAirport, - ZonedDateTime departureDate, - ZonedDateTime endDate, - double price) { -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java b/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java deleted file mode 100644 index 5a41162ba8455950695b32fd2e4983f143c2c75d..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/presentation/responsedto/UserResponseDto.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.takima.agencymanagement.presentation.responsedto; - -public record UserResponseDto( - String firstName, - String lastName, - String contact) { -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java b/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java deleted file mode 100644 index 37969c2c3a44d86e048ce96449bdf070b49a26cd..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/service/TravelService.java +++ /dev/null @@ -1,158 +0,0 @@ -package io.takima.agencymanagement.service; - -import io.takima.agencymanagement.dao.TravelDao; -import io.takima.agencymanagement.mapper.TravelDtoMapper; -import io.takima.agencymanagement.model.Travel; -import io.takima.agencymanagement.model.User; -import io.takima.agencymanagement.presentation.responsedto.TravelResponseDto; -import io.takima.agencymanagement.model.Discount; - -import java.time.Duration; -import java.time.Instant; -import java.util.Comparator; -import java.util.List; -import java.util.NoSuchElementException; - -import static io.takima.agencymanagement.mapper.TravelDtoMapper.fromTravel; - -public class TravelService { - - private TravelDao travelDao; - - public TravelService() { - travelDao = new TravelDao(); - } - - public TravelResponseDto create(Travel travel) { - travelDao.persist(travel); - return fromTravel(travel); - } - - public TravelResponseDto update(Travel travel) { - travelDao.persist(travel); - return fromTravel(travel); - } - - public TravelResponseDto delete(Travel travel) { - travelDao.persist(travel); - return fromTravel(travel); - } - - public TravelResponseDto findById(Long id) { - Travel travel = travelDao.findById(id); - return fromTravel(travel); - } - - public List<TravelResponseDto> findAll() { - return travelDao.findAll().stream() - .map(TravelDtoMapper::fromTravel) - .toList(); - - } - public void applyDiscounts(Travel travel) { - if (travel.getDiscounts().isEmpty()) { - System.out.println("Aucune réduction n'est applicable sur ce voyage !"); - } else { - double discountedPrice = travel.getPrice(); - for (Discount discount : travel.getDiscounts()) { - discountedPrice = discount.apply(discountedPrice); - } - System.out.println("Prix après les réductions : " + discountedPrice); - } - } - - public boolean 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."); - } - - if (travel.getParticipants().size() < travel.getCapacity()) { - travel.getParticipants().add(user); - return true; - } - travel.getWaitList().add(user); - return false; - } - - public void unsubscribe(User user, Travel travel) { - - travel.getParticipants().remove(user); - - if (!travel.getWaitList().isEmpty()) { - travel.getParticipants().add(travel.getWaitList().poll()); - } - } - - public Duration computeTravelDuration(Travel travel) { - return Duration.between(travel.getDepartureDate(), travel.getArrivalDate()); - } - - public void adjustDates(Duration delay, Travel travel) { - travel.setDepartureDate(travel.getDepartureDate().plus(delay)); - travel.setArrivalDate(travel.getArrivalDate().plus(delay)); - } - - public Travel findClosestToCurrentDate(List<Travel> travels) { - Instant now = Instant.now(); - - return travels.stream() - .min(Comparator.comparing(travel -> Duration.between(now, travel.getDepartureDate()).abs())) - .orElseThrow(NoSuchElementException::new); - } - - public List<Travel> findAvailableForDestination(String destination) { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .filter(travel -> travel.getCapacity() > travel.getParticipants().size() && travel.getDestination().equals(destination)) - .toList(); - } - - public List<Travel> findInPriceRange(double minPrice, double maxPrice) { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .filter(travel -> travel.getPrice() >= minPrice && travel.getPrice() <= maxPrice) - .toList(); - } - - public List<Travel> findNSortedByPriceAsc(int n) { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .sorted(Comparator.comparing(Travel::getPrice)) - .limit(n) - .toList(); - } - - public List<Travel> findWithPromotions() { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .filter(travel -> !travel.getDiscounts().isEmpty()) - .toList(); - } - - public List<Travel> findByUser(String firstName, String lastName) { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .filter(travel -> - travel.getParticipants().stream() - .anyMatch(user -> - user.getFirstName().equals(firstName) && - user.getLastName().equals(lastName))) - .toList(); - } - - public double getAveragePrice() { - List<Travel> travels = travelDao.findAll(); - - return travels.stream() - .mapToDouble(Travel::getPrice) - .average() - .orElse(0.0); - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java b/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java deleted file mode 100644 index 08903f6c0eee79fc1fc9b8c05b6e17e14caa7d4e..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/service/UserService.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.takima.agencymanagement.service; - -import io.takima.agencymanagement.dao.UserDao; -import io.takima.agencymanagement.mapper.UserDtoMapper; -import io.takima.agencymanagement.model.User; -import io.takima.agencymanagement.presentation.responsedto.UserResponseDto; - -import java.util.List; - -import static io.takima.agencymanagement.mapper.UserDtoMapper.fromUser; - -public class UserService { - - UserDao userDao = new UserDao(); - - public UserResponseDto create(User user) { - userDao.persist(user); - return fromUser(user); - } - - public UserResponseDto update(User user) { - userDao.persist(user); - return fromUser(user); - } - - public UserResponseDto delete(User user) { - userDao.persist(user); - return fromUser(user); - } - - public UserResponseDto findById(Long id) { - User user = userDao.findById(id); - return fromUser(user); - } - - public List<UserResponseDto> findAll() { - return userDao.findAll().stream() - .map(UserDtoMapper::fromUser) - .toList(); - - } -} diff --git a/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java b/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java deleted file mode 100644 index d48a17b7a424a42a613db4a3d1e8358cc03f31c5..0000000000000000000000000000000000000000 --- a/resources/solution/day-1/src/io/takima/agencymanagement/utils/AirportManager.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.takima.agencymanagement.utils; - -import io.takima.agencymanagement.model.Airport; - -import java.util.HashMap; -import java.util.Map; - -public class AirportManager { - - private static final Map<Airport, String> timeZone = new HashMap<>(); - - static { - timeZone.put(Airport.PARIS_CHARLES_DE_GAULLE, "Europe/Paris"); - timeZone.put(Airport.PARIS_ORLY, "Europe/Paris"); - timeZone.put(Airport.NEW_YORK_JFK, "America/New_York"); - timeZone.put(Airport.NEW_YORK_NEWARK, "America/New_York"); - timeZone.put(Airport.NEW_YORK_LAGUARDIA, "America/New_York"); - timeZone.put(Airport.TOKYO_NARITA, "Asia/Tokyo"); - timeZone.put(Airport.TOKYO_HANEDA, "Asia/Tokyo"); - } -} diff --git a/resources/solution/day-2/.gitkeep b/resources/solution/day-2/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/resources/solution/day-2/day2.zip b/resources/solution/day-2/day2.zip deleted file mode 100644 index a7f5535d8e48728a50bdf7d56035e61f38d2449c..0000000000000000000000000000000000000000 Binary files a/resources/solution/day-2/day2.zip and /dev/null differ diff --git a/old/done/front-end/.babelrc b/resources/solution/front-end/.babelrc similarity index 100% rename from old/done/front-end/.babelrc rename to resources/solution/front-end/.babelrc diff --git a/old/done/front-end/browserslist b/resources/solution/front-end/browserslist similarity index 100% rename from old/done/front-end/browserslist rename to resources/solution/front-end/browserslist diff --git a/old/done/front-end/package-lock.json b/resources/solution/front-end/package-lock.json similarity index 100% rename from old/done/front-end/package-lock.json rename to resources/solution/front-end/package-lock.json diff --git a/old/done/front-end/package.json b/resources/solution/front-end/package.json similarity index 100% rename from old/done/front-end/package.json rename to resources/solution/front-end/package.json diff --git a/old/done/front-end/src/app/components/footer/footer.component.html b/resources/solution/front-end/src/app/components/footer/footer.component.html similarity index 100% rename from old/done/front-end/src/app/components/footer/footer.component.html rename to resources/solution/front-end/src/app/components/footer/footer.component.html diff --git a/old/done/front-end/src/app/components/footer/footer.component.js b/resources/solution/front-end/src/app/components/footer/footer.component.js similarity index 100% rename from old/done/front-end/src/app/components/footer/footer.component.js rename to resources/solution/front-end/src/app/components/footer/footer.component.js diff --git a/old/done/front-end/src/app/components/footer/footer.component.scss b/resources/solution/front-end/src/app/components/footer/footer.component.scss similarity index 100% rename from old/done/front-end/src/app/components/footer/footer.component.scss rename to resources/solution/front-end/src/app/components/footer/footer.component.scss diff --git a/old/done/front-end/src/app/components/game/card/card.component.html b/resources/solution/front-end/src/app/components/game/card/card.component.html similarity index 100% rename from old/done/front-end/src/app/components/game/card/card.component.html rename to resources/solution/front-end/src/app/components/game/card/card.component.html diff --git a/old/done/front-end/src/app/components/game/card/card.component.js b/resources/solution/front-end/src/app/components/game/card/card.component.js similarity index 100% rename from old/done/front-end/src/app/components/game/card/card.component.js rename to resources/solution/front-end/src/app/components/game/card/card.component.js diff --git a/old/done/front-end/src/app/components/game/card/card.component.scss b/resources/solution/front-end/src/app/components/game/card/card.component.scss similarity index 100% rename from old/done/front-end/src/app/components/game/card/card.component.scss rename to resources/solution/front-end/src/app/components/game/card/card.component.scss diff --git a/old/done/front-end/src/app/components/game/game.component.html b/resources/solution/front-end/src/app/components/game/game.component.html similarity index 100% rename from old/done/front-end/src/app/components/game/game.component.html rename to resources/solution/front-end/src/app/components/game/game.component.html diff --git a/old/done/front-end/src/app/components/game/game.component.js b/resources/solution/front-end/src/app/components/game/game.component.js similarity index 100% rename from old/done/front-end/src/app/components/game/game.component.js rename to resources/solution/front-end/src/app/components/game/game.component.js diff --git a/old/done/front-end/src/app/components/game/game.component.scss b/resources/solution/front-end/src/app/components/game/game.component.scss similarity index 100% rename from old/done/front-end/src/app/components/game/game.component.scss rename to resources/solution/front-end/src/app/components/game/game.component.scss diff --git a/old/done/front-end/src/app/components/navbar/navbar.component.html b/resources/solution/front-end/src/app/components/navbar/navbar.component.html similarity index 100% rename from old/done/front-end/src/app/components/navbar/navbar.component.html rename to resources/solution/front-end/src/app/components/navbar/navbar.component.html diff --git a/old/done/front-end/src/app/components/navbar/navbar.component.js b/resources/solution/front-end/src/app/components/navbar/navbar.component.js similarity index 100% rename from old/done/front-end/src/app/components/navbar/navbar.component.js rename to resources/solution/front-end/src/app/components/navbar/navbar.component.js diff --git a/old/done/front-end/src/app/components/navbar/navbar.component.scss b/resources/solution/front-end/src/app/components/navbar/navbar.component.scss similarity index 100% rename from old/done/front-end/src/app/components/navbar/navbar.component.scss rename to resources/solution/front-end/src/app/components/navbar/navbar.component.scss diff --git a/old/done/front-end/src/app/components/score/score.component.html b/resources/solution/front-end/src/app/components/score/score.component.html similarity index 100% rename from old/done/front-end/src/app/components/score/score.component.html rename to resources/solution/front-end/src/app/components/score/score.component.html diff --git a/old/done/front-end/src/app/components/score/score.component.js b/resources/solution/front-end/src/app/components/score/score.component.js similarity index 100% rename from old/done/front-end/src/app/components/score/score.component.js rename to resources/solution/front-end/src/app/components/score/score.component.js diff --git a/old/done/front-end/src/app/components/score/score.component.scss b/resources/solution/front-end/src/app/components/score/score.component.scss similarity index 100% rename from old/done/front-end/src/app/components/score/score.component.scss rename to resources/solution/front-end/src/app/components/score/score.component.scss diff --git a/old/done/front-end/src/app/components/welcome/welcome.component.html b/resources/solution/front-end/src/app/components/welcome/welcome.component.html similarity index 100% rename from old/done/front-end/src/app/components/welcome/welcome.component.html rename to resources/solution/front-end/src/app/components/welcome/welcome.component.html diff --git a/old/done/front-end/src/app/components/welcome/welcome.component.js b/resources/solution/front-end/src/app/components/welcome/welcome.component.js similarity index 100% rename from old/done/front-end/src/app/components/welcome/welcome.component.js rename to resources/solution/front-end/src/app/components/welcome/welcome.component.js diff --git a/old/done/front-end/src/app/components/welcome/welcome.component.scss b/resources/solution/front-end/src/app/components/welcome/welcome.component.scss similarity index 100% rename from old/done/front-end/src/app/components/welcome/welcome.component.scss rename to resources/solution/front-end/src/app/components/welcome/welcome.component.scss diff --git a/old/done/front-end/src/app/scripts/component.js b/resources/solution/front-end/src/app/scripts/component.js similarity index 100% rename from old/done/front-end/src/app/scripts/component.js rename to resources/solution/front-end/src/app/scripts/component.js diff --git a/old/done/front-end/src/app/scripts/router.js b/resources/solution/front-end/src/app/scripts/router.js similarity index 100% rename from old/done/front-end/src/app/scripts/router.js rename to resources/solution/front-end/src/app/scripts/router.js diff --git a/old/done/front-end/src/app/scripts/utils.js b/resources/solution/front-end/src/app/scripts/utils.js similarity index 100% rename from old/done/front-end/src/app/scripts/utils.js rename to resources/solution/front-end/src/app/scripts/utils.js diff --git a/old/done/front-end/src/app/styles/_colors.scss b/resources/solution/front-end/src/app/styles/_colors.scss similarity index 100% rename from old/done/front-end/src/app/styles/_colors.scss rename to resources/solution/front-end/src/app/styles/_colors.scss diff --git a/old/done/front-end/src/app/styles/style.scss b/resources/solution/front-end/src/app/styles/style.scss similarity index 100% rename from old/done/front-end/src/app/styles/style.scss rename to resources/solution/front-end/src/app/styles/style.scss diff --git a/old/done/front-end/src/assets/cards/back.png b/resources/solution/front-end/src/assets/cards/back.png similarity index 100% rename from old/done/front-end/src/assets/cards/back.png rename to resources/solution/front-end/src/assets/cards/back.png diff --git a/old/done/front-end/src/assets/cards/card-0.png b/resources/solution/front-end/src/assets/cards/card-0.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-0.png rename to resources/solution/front-end/src/assets/cards/card-0.png diff --git a/old/done/front-end/src/assets/cards/card-1.png b/resources/solution/front-end/src/assets/cards/card-1.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-1.png rename to resources/solution/front-end/src/assets/cards/card-1.png diff --git a/old/done/front-end/src/assets/cards/card-2.png b/resources/solution/front-end/src/assets/cards/card-2.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-2.png rename to resources/solution/front-end/src/assets/cards/card-2.png diff --git a/old/done/front-end/src/assets/cards/card-3.png b/resources/solution/front-end/src/assets/cards/card-3.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-3.png rename to resources/solution/front-end/src/assets/cards/card-3.png diff --git a/old/done/front-end/src/assets/cards/card-4.png b/resources/solution/front-end/src/assets/cards/card-4.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-4.png rename to resources/solution/front-end/src/assets/cards/card-4.png diff --git a/old/done/front-end/src/assets/cards/card-5.png b/resources/solution/front-end/src/assets/cards/card-5.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-5.png rename to resources/solution/front-end/src/assets/cards/card-5.png diff --git a/old/done/front-end/src/assets/cards/card-6.png b/resources/solution/front-end/src/assets/cards/card-6.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-6.png rename to resources/solution/front-end/src/assets/cards/card-6.png diff --git a/old/done/front-end/src/assets/cards/card-7.png b/resources/solution/front-end/src/assets/cards/card-7.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-7.png rename to resources/solution/front-end/src/assets/cards/card-7.png diff --git a/old/done/front-end/src/assets/cards/card-8.png b/resources/solution/front-end/src/assets/cards/card-8.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-8.png rename to resources/solution/front-end/src/assets/cards/card-8.png diff --git a/old/done/front-end/src/assets/cards/card-9.png b/resources/solution/front-end/src/assets/cards/card-9.png similarity index 100% rename from old/done/front-end/src/assets/cards/card-9.png rename to resources/solution/front-end/src/assets/cards/card-9.png diff --git a/old/done/front-end/src/assets/happy_homer.jpg b/resources/solution/front-end/src/assets/happy_homer.jpg similarity index 100% rename from old/done/front-end/src/assets/happy_homer.jpg rename to resources/solution/front-end/src/assets/happy_homer.jpg diff --git a/old/done/front-end/src/assets/logo_take_my_money.png b/resources/solution/front-end/src/assets/logo_take_my_money.png similarity index 100% rename from old/done/front-end/src/assets/logo_take_my_money.png rename to resources/solution/front-end/src/assets/logo_take_my_money.png diff --git a/old/done/front-end/src/favicon.ico b/resources/solution/front-end/src/favicon.ico similarity index 100% rename from old/done/front-end/src/favicon.ico rename to resources/solution/front-end/src/favicon.ico diff --git a/old/done/front-end/src/index.html b/resources/solution/front-end/src/index.html similarity index 100% rename from old/done/front-end/src/index.html rename to resources/solution/front-end/src/index.html diff --git a/old/done/front-end/src/main.js b/resources/solution/front-end/src/main.js similarity index 100% rename from old/done/front-end/src/main.js rename to resources/solution/front-end/src/main.js diff --git a/old/done/front-end/webpack.config.js b/resources/solution/front-end/webpack.config.js similarity index 100% rename from old/done/front-end/webpack.config.js rename to resources/solution/front-end/webpack.config.js