Commit 26fdd410 authored by Alex Pinto's avatar Alex Pinto

added block on update endpoint

parent 0aa69552
...@@ -85,6 +85,17 @@ ...@@ -85,6 +85,17 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
</dependency> </dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -2,6 +2,10 @@ package com.ascendfinalproject.warehouse; ...@@ -2,6 +2,10 @@ package com.ascendfinalproject.warehouse;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@SpringBootApplication @SpringBootApplication
public class WarehouseApplication { public class WarehouseApplication {
...@@ -9,6 +13,11 @@ public class WarehouseApplication { ...@@ -9,6 +13,11 @@ public class WarehouseApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(WarehouseApplication.class, args); SpringApplication.run(WarehouseApplication.class, args);
} }
@Bean
public Docket productApi() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage("com.ascendfinalproject.warehouse")).build();
}
} }
...@@ -42,11 +42,8 @@ public class WarehouseController { ...@@ -42,11 +42,8 @@ public class WarehouseController {
@CrossOrigin @CrossOrigin
@PutMapping(value = "/orders/{id}") @PutMapping(value = "/orders/{id}")
public Mono<ResponseEntity> updateOrder(@RequestBody WarehouseOrderResponse order, @PathVariable(value = "id") String id) { public Mono<WarehouseOrderResponse> updateOrder(@RequestBody WarehouseOrderResponse order, @PathVariable(value = "id") String id) {
return orderService.updateOrder(order, id) return orderService.updateOrder(order, id);
.map(updatedOrder -> (ResponseEntity.status(HttpStatus.OK).body(order)))
.cast(ResponseEntity.class)
.defaultIfEmpty(ResponseEntity.status(HttpStatus.NOT_FOUND).body(null));
} }
@CrossOrigin @CrossOrigin
......
...@@ -6,8 +6,9 @@ import com.ascendfinalproject.warehouse.models.WarehouseOrderRequest; ...@@ -6,8 +6,9 @@ import com.ascendfinalproject.warehouse.models.WarehouseOrderRequest;
import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse; import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import com.ascendfinalproject.warehouse.repositories.WarehouseOrderRepository; import com.ascendfinalproject.warehouse.repositories.WarehouseOrderRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import reactor.core.CoreSubscriber;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
...@@ -16,6 +17,10 @@ import java.util.Date; ...@@ -16,6 +17,10 @@ import java.util.Date;
@Service @Service
public class WarehouseOrderService { public class WarehouseOrderService {
private String RECEIVED = "RECEIVED";
private String FULFILLED = "FULFILLED";
private String CANCELLED = "CANCELLED";
@Autowired @Autowired
WarehouseOrderRepository orderRepository; WarehouseOrderRepository orderRepository;
...@@ -30,9 +35,8 @@ public class WarehouseOrderService { ...@@ -30,9 +35,8 @@ public class WarehouseOrderService {
public Mono<WarehouseOrderResponse> createOrder(WarehouseOrderRequest order) { public Mono<WarehouseOrderResponse> createOrder(WarehouseOrderRequest order) {
WarehouseOrderResponse response = new WarehouseOrderResponse(); WarehouseOrderResponse response = new WarehouseOrderResponse();
response.setOrderId(order.getId()); response.setOrderId(order.getId());
response.setStatus("RECEIVED"); response.setStatus(RECEIVED);
response.setCreatedAt(new Date(order.getOrderCreatedAt())); response.setCreatedAt(new Date(order.getOrderCreatedAt()));
response.setModifiedAt(new Date(order.getOrderUpdatedAt()));
response.setOrderItems(order.getOrderItems()); response.setOrderItems(order.getOrderItems());
Address address = order.getCustomerAddress(); Address address = order.getCustomerAddress();
response.setAddress(address.getStreet() + ", " + response.setAddress(address.getStreet() + ", " +
...@@ -46,10 +50,16 @@ public class WarehouseOrderService { ...@@ -46,10 +50,16 @@ public class WarehouseOrderService {
public Mono<WarehouseOrderResponse> updateOrder(WarehouseOrderResponse order, String id) { public Mono<WarehouseOrderResponse> updateOrder(WarehouseOrderResponse order, String id) {
return orderRepository.findById(id) return orderRepository.findById(id)
.flatMap(existingOrder -> { .flatMap(existingOrder -> {
existingOrder.setStatus(order.getStatus()); if (existingOrder.getStatus().equals(RECEIVED)) {
existingOrder.setModifiedAt(new Date(System.currentTimeMillis())); if (order.getStatus().equals(FULFILLED) || order.getStatus().equals(CANCELLED)) {
return orderRepository.save(existingOrder); existingOrder.setStatus(order.getStatus());
existingOrder.setModifiedAt(new Date(System.currentTimeMillis()));
}
}
return orderRepository.save(existingOrder);
}); });
} }
public Mono<Void> deleteOrder(String id) { public Mono<Void> deleteOrder(String id) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment