Cab Service Impl

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

package com.cabbooking.cabservice.

service;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cabbooking.cabservice.entity.Cab;
import com.cabbooking.cabservice.exception.NotFoundException;
import com.cabbooking.cabservice.model.CabInfo;
import com.cabbooking.cabservice.model.DriverInfo;
import com.cabbooking.cabservice.repository.VehicleRepository;

@Service
public class VehicleServiceImpl implements VehicleService {
@Autowired
private VehicleRepository vehicleRepository;

@Autowired
private DriverService driverServiceClient;

@Override
public Cab addVehicle(Cab vehicle) {
return vehicleRepository.save(vehicle);
}

@Override
public Cab updateVehicle(Cab vehicle) throws NotFoundException {
Optional<Cab> optionalVehicle =
vehicleRepository.findById(vehicle.getId());
if (optionalVehicle.isEmpty()) {
throw new NotFoundException("Vehicle not found with ID: " +
vehicle.getId());
}
vehicleRepository.save(vehicle);
return vehicle;
}

@Override
public List<String> fetchVehicleTypes(String vehicleType) throws
NotFoundException {
List<String> vehicleTypes =
vehicleRepository.fetchDistinctVehicleTypes(vehicleType);
return vehicleTypes;
}

@Override
public int countVehiclesOfType() throws NotFoundException {
List<Cab> totalVehicles = vehicleRepository.findAll();
return totalVehicles.size();
}

@Override
public void removeVehicle(int vehicleId) {
Optional<Cab> optionalVehicle = vehicleRepository.findById(vehicleId);
if (optionalVehicle.isEmpty()) {
throw new NotFoundException("Vehicle not found with ID: " +
vehicleId);
}
Cab vehicle = optionalVehicle.get();
vehicleRepository.delete(vehicle);
}

@Override
public List<CabInfo> getAllVehicles() {
List<Cab> vehicleList = vehicleRepository.findAll();
List<CabInfo> vehicleInfoList = new ArrayList<>();
for (Cab vehicle : vehicleList) {
CabInfo vehicleInfo = new CabInfo();
vehicleInfo.setVehicleId(vehicle.getId());
vehicleInfo.setVehicleType(vehicle.getVehicleType());
vehicleInfo.setRatePerKm(vehicle.getRatePerKm());
vehicleInfo.setDriverId(vehicle.getDriverId());

int driverId = vehicle.getDriverId();

DriverInfo driverInfo =
driverServiceClient.fetchDriverInfo(driverId);

vehicleInfo.setDriverInfo(driverInfo);
vehicleInfoList.add(vehicleInfo);

return vehicleInfoList;
}

You might also like