diff --git a/src/main/java/ro/raffa/curs/configuration/raffa/CarRepositoryConfigRaffa.java b/src/main/java/ro/raffa/curs/configuration/raffa/CarRepositoryConfigRaffa.java new file mode 100644 index 0000000..105a996 --- /dev/null +++ b/src/main/java/ro/raffa/curs/configuration/raffa/CarRepositoryConfigRaffa.java @@ -0,0 +1,47 @@ +package ro.raffa.curs.configuration.raffa; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import ro.raffa.curs.model.Car; +import ro.raffa.curs.repository.MemoryRepository; + +@Configuration +@Profile("raffa") +public class CarRepositoryConfigRaffa { + + List list; + + @Bean + public void loadDataRaffa() { + list = new ArrayList(); + addCarIntoList("BMW", "21C", "Green", 2019, BigDecimal.valueOf(200000), "EUR", 4, 2, 23); + addCarIntoList("Toyota", "Chinese-Version", "Skye", 2021, BigDecimal.valueOf(302100), "EUR", 4, 4, 23); + addCarIntoList("Tesla", "Truck", "Cream", 2022, BigDecimal.valueOf(199999.99), "EUR", 2, 4, 3); + addCarIntoList("Tesla", "3-Wheelie", "Rose", 2023, BigDecimal.valueOf(60000), "EUR", 3, 2, 4); + addCarIntoList("Mustang", "Thanos", "Purple", 2023, BigDecimal.valueOf(9000000), "EUR", 6, 4, 1); + + MemoryRepository.carList = list; + } + + private void addCarIntoList(String maker, String model, String color, Integer year, BigDecimal price, + String currency, Integer numberOfWheels, Integer numberOfDoors, Integer numberInStock) { + Car c = new Car(); + c.setMaker(maker); + c.setModel(model); + c.setColor(color); + c.setYear(year); + c.setPrice(price); + c.setCurrency(currency); + c.setNumberOfWheels(numberOfWheels); + c.setNumberOfDoors(numberOfDoors); + c.setNumberInStock(numberInStock); + + list.add(c); + } +} diff --git a/src/main/java/ro/raffa/curs/controller/v1/CarController.java b/src/main/java/ro/raffa/curs/controller/v1/CarController.java index a6f892e..f555c85 100644 --- a/src/main/java/ro/raffa/curs/controller/v1/CarController.java +++ b/src/main/java/ro/raffa/curs/controller/v1/CarController.java @@ -38,4 +38,24 @@ public List getExpensiveCars(@RequestParam Integer percent) { List list = carService.getExpensiveCars(percent); return carMapper.map(list); } + + // TEMA + + @GetMapping("/car/list/modify/stocks/increase") + public List getIncreasedStocks(@RequestParam Integer integer) { + List list = carService.increaseStocks(integer); + return carMapper.map(list); + } + + @GetMapping("/car/list/modify/stocks/0") + public List setNoStocks() { + List list = carService.setCarStockEmpty(); + return carMapper.map(list); + } + + @GetMapping("/car/list/modify/stock/car") + public List modifyCarStock(@RequestParam String model, @RequestParam Integer integer) { + List list = carService.modifyCarStock(model, integer); + return carMapper.map(list); + } } diff --git a/src/main/java/ro/raffa/curs/dto/CarDto.java b/src/main/java/ro/raffa/curs/dto/CarDto.java index 1d7c4a9..5279c29 100644 --- a/src/main/java/ro/raffa/curs/dto/CarDto.java +++ b/src/main/java/ro/raffa/curs/dto/CarDto.java @@ -9,4 +9,10 @@ public class CarDto { private String color; private Integer year; private PriceDto price; + + // TEMA + private Integer numberOfWheels; + private Integer numberOfDoors; + private Integer numberInStock; + } diff --git a/src/main/java/ro/raffa/curs/mapper/CarMapper.java b/src/main/java/ro/raffa/curs/mapper/CarMapper.java index a13a305..bcecbd1 100644 --- a/src/main/java/ro/raffa/curs/mapper/CarMapper.java +++ b/src/main/java/ro/raffa/curs/mapper/CarMapper.java @@ -25,6 +25,11 @@ public CarDto map(Car car) { carDto.setPrice(priceDto); + // TEMA + carDto.setNumberInStock(car.getNumberInStock()); + carDto.setNumberOfDoors(car.getNumberOfDoors()); + carDto.setNumberOfWheels(car.getNumberOfWheels()); + return carDto; } diff --git a/src/main/java/ro/raffa/curs/model/Car.java b/src/main/java/ro/raffa/curs/model/Car.java index a72bd99..7ffbd5d 100644 --- a/src/main/java/ro/raffa/curs/model/Car.java +++ b/src/main/java/ro/raffa/curs/model/Car.java @@ -12,4 +12,9 @@ public class Car { private Integer year; private BigDecimal price; private String currency; + + // TEMA + private Integer numberOfWheels; + private Integer numberOfDoors; + private Integer numberInStock; } \ No newline at end of file diff --git a/src/main/java/ro/raffa/curs/service/CarService.java b/src/main/java/ro/raffa/curs/service/CarService.java index 8e2ef73..92a46ae 100644 --- a/src/main/java/ro/raffa/curs/service/CarService.java +++ b/src/main/java/ro/raffa/curs/service/CarService.java @@ -22,4 +22,39 @@ public List getExpensiveCars(Integer percent) { } return cars; } + + // TEMA + + public List increaseStocks(Integer value) { + List cars = carRepository.getAllCars(); + for (Car car : cars) { + car.setNumberInStock(car.getNumberInStock() + value); + } + return cars; + } + + public List setCarStockEmpty() { + List cars = carRepository.getAllCars(); + for (Car car : cars) { + car.setNumberInStock(0); + } + return cars; + } + + public List modifyCarStock(String model, Integer value) { + List cars = carRepository.getAllCars(); + boolean found = false; + for (Car car : cars) { + if (car.getModel().equals(model)) { + car.setNumberInStock(car.getNumberInStock() + value); + found = !found; + } + } + if (!found) { + System.out.println( + "EXCEPTION: Request for modifyCarStock(String model, Integer value) hasn't found the model name"); + } + return cars; + } + }