Skip to content
Extraits de code Groupes Projets
Valider be28953b rédigé par safae.rabbouzi's avatar safae.rabbouzi
Parcourir les fichiers

implement getReservationVehicleAndContractDetails

parent 0c2221e9
Branches
1 requête de fusion!4MLC-301/implement getReservationVehicleAndContractDetails
Pipeline #20371 en échec avec les étapes
in 19 secondes
......@@ -33,7 +33,7 @@
<dependency>
<groupId>com.marketingconfort</groupId>
<artifactId>mobiloca-common</artifactId>
<version>0.0.25-RELEASE</version>
<version>0.0.27-RELEASE</version>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
......
......@@ -10,7 +10,7 @@ public class Paths {
public static final String GLOBAL_RESERVATION_BASE = BASE_URL + "/global-reservation";
public static final String SINGLE_RESERVATION_BASE = BASE_URL + "/single-reservation";
public static final String ALL_RESERVATIONS = "all";
public static final String ALL_RESERVATIONS = "/all";
public static final String RESERVATION_BY_ID = "/{id}";
public static final String RESERVATIONS_BY_CLIENT = "/client/{clientId}";
public static final String RESERVATION_BY_NUMBER = "/number/{reservationNumber}";
......@@ -28,5 +28,6 @@ public class Paths {
public static final String RESERVATION_DURATION = "/{id}/duration";
public static final String CHECK_AVAILABILITY = "/check-availability";
public static final String RESERVATION_TOTAL_COST = "/{id}/total-cost";
public static final String RESERVATION_DETAILS = "/{id}/details";
}
package com.marketingconfort.mobiloca.controller;
import com.marketingconfort.mobiloca.common.Reservation.enums.ReservationType;
import com.marketingconfort.mobiloca.common.Fleet.dtos.ReservationDetailsDTO;
import com.marketingconfort.mobiloca.common.Reservation.enums.SingleReservationStatus;
import com.marketingconfort.mobiloca.common.Reservation.models.SingleReservation;
import com.marketingconfort.mobiloca.constants.Paths;
import com.marketingconfort.mobiloca.dto.GlobalReservationDTO;
import com.marketingconfort.mobiloca.dto.SingleReservationDTO;
import com.marketingconfort.mobiloca.mapper.GlobalReservationMapper;
import com.marketingconfort.mobiloca.mapper.SingleReservationMapper;
import com.marketingconfort.mobiloca.service.GlobalReservationService;
import com.marketingconfort.mobiloca.service.SingleReservationService;
import com.marketingconfort.starter.core.exceptions.FunctionalException;
import lombok.RequiredArgsConstructor;
......@@ -131,4 +128,9 @@ public class SingleReservationController {
public ResponseEntity<Double> calculateTotalCost(@PathVariable Long id) throws FunctionalException {
return ResponseEntity.ok(singleReservationService.calculateTotalCost(id));
}
@GetMapping(Paths.RESERVATION_DETAILS)
public ResponseEntity<ReservationDetailsDTO> getReservationDetails(@PathVariable("id") Long id) throws FunctionalException {
return ResponseEntity.ok(singleReservationService.getReservationVehicleAndContractDetails(id));
}
}
\ No newline at end of file
package com.marketingconfort.mobiloca.service;
import com.marketingconfort.mobiloca.common.Reservation.enums.ReservationType;
import com.marketingconfort.mobiloca.common.Fleet.dtos.ReservationDetailsDTO;
import com.marketingconfort.mobiloca.common.Reservation.enums.SingleReservationStatus;
import com.marketingconfort.mobiloca.common.Reservation.models.SingleReservation;
import com.marketingconfort.mobiloca.dto.SingleReservationDTO;
......@@ -26,4 +26,6 @@ public interface SingleReservationService {
SingleReservation updateInsuranceOption(Long id, Boolean insurance) throws FunctionalException;
SingleReservation associateContract(Long singleReservationId, Long contractId) throws FunctionalException;
Double calculateTotalCost(Long singleReservationId) throws FunctionalException;
ReservationDetailsDTO getReservationVehicleAndContractDetails(Long reservationId) throws FunctionalException;
}
\ No newline at end of file
package com.marketingconfort.mobiloca.service.impl;
import com.marketingconfort.mobiloca.common.Reservation.enums.ReservationType;
import com.marketingconfort.mobiloca.common.Reservation.enums.SingleReservationStatus;
import com.marketingconfort.mobiloca.common.Reservation.models.Contract;
import com.marketingconfort.mobiloca.common.Reservation.models.GlobalReservation;
import com.marketingconfort.mobiloca.common.Reservation.models.SingleReservation;
import com.marketingconfort.mobiloca.constants.Message;
import com.marketingconfort.mobiloca.dto.GlobalReservationDTO;
import com.marketingconfort.mobiloca.common.Fleet.dtos.ReservationDetailsDTO;
import com.marketingconfort.mobiloca.dto.SingleReservationDTO;
import com.marketingconfort.mobiloca.mapper.GlobalReservationMapper;
import com.marketingconfort.mobiloca.dto.VehicleDTO;
import com.marketingconfort.mobiloca.mapper.SingleReservationMapper;
import com.marketingconfort.mobiloca.repository.ContractRepository;
import com.marketingconfort.mobiloca.repository.GlobalReservationRepository;
import com.marketingconfort.mobiloca.repository.SingleReservationRepository;
import com.marketingconfort.mobiloca.service.ClientService;
import com.marketingconfort.mobiloca.service.GlobalReservationService;
import com.marketingconfort.mobiloca.service.SingleReservationService;
import com.marketingconfort.mobiloca.service.VehicleService;
import com.marketingconfort.starter.core.exceptions.FunctionalException;
......@@ -159,4 +156,36 @@ public class SingleReservationServiceImpl implements SingleReservationService {
.orElseThrow(() -> new FunctionalException(Message.RESERVATION_NOT_FOUND + singleReservationId));
return 100.0 * calculateRentalDuration(singleReservationId);
}
@Override
public ReservationDetailsDTO getReservationVehicleAndContractDetails(Long reservationId) throws FunctionalException {
SingleReservation reservation = singleReservationRepository.findById(reservationId)
.orElseThrow(() -> new FunctionalException(Message.RESERVATION_NOT_FOUND + reservationId));
Contract contract = reservation.getContract();
if (contract == null) {
throw new FunctionalException("Contract not found for reservation ID: " + reservationId);
}
Long vehicleId = reservation.getVehicleId();
if (vehicleId == null) {
throw new FunctionalException("Vehicle ID is null for reservation ID: " + reservationId);
}
VehicleDTO vehicle = vehicleService.getVehicleById(vehicleId);
if (vehicle == null) {
throw new FunctionalException("Vehicle not found for ID: " + vehicleId);
}
return new ReservationDetailsDTO(
reservation.getUnitReservationId(),
vehicle.getId(),
vehicle.getRegistration(),
vehicle.getBrand(),
vehicle.getModel(),
contract.getId()
);
}
}
......@@ -26,8 +26,8 @@ management:
external:
user:
service:
url: http://localhost:2020/api/user
url: http://localhost:2021/api/user
vehicle:
service:
url: http://localhost:2020/api/vehicle
\ No newline at end of file
url: http://localhost:2025/api/vehicle
\ No newline at end of file
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter