Add OrderModel, OrderItemModel
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package de.htwsaar.webshop.controller;
|
||||
|
||||
import de.htwsaar.webshop.model.OrderModel;
|
||||
import de.htwsaar.webshop.model.OrderStatus;
|
||||
import de.htwsaar.webshop.repository.entities.Order;
|
||||
import de.htwsaar.webshop.service.OrderService;
|
||||
@@ -32,30 +33,30 @@ public class OrderController {
|
||||
}
|
||||
|
||||
@RequestMapping(path = ORDER_GET_ALL, method = RequestMethod.GET, produces = "application/json")
|
||||
public ResponseEntity<List<Order>> getAll(HttpServletRequest request,
|
||||
public ResponseEntity<List<OrderModel>> getAll(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_CUSTOMER_ID) Long customerId) {
|
||||
logRequest(request);
|
||||
List<Order> orders = orderService.getAllOrders(customerId);
|
||||
if (orders.isEmpty()) {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
return ResponseEntity.ok(orders);
|
||||
return ResponseEntity.ok(orders.stream().map(Order::toModel).toList());
|
||||
}
|
||||
|
||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.GET, produces = "application/json")
|
||||
public ResponseEntity<Order> get(HttpServletRequest request,
|
||||
public ResponseEntity<OrderModel> get(HttpServletRequest request,
|
||||
@RequestParam(value = PARAM_ID) Long orderId) {
|
||||
logRequest(request);
|
||||
Order image = orderService.getOrderById(orderId);
|
||||
if (image == null) {
|
||||
Order order = orderService.getOrderById(orderId);
|
||||
if (order == null) {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
return ResponseEntity.ok(image);
|
||||
return ResponseEntity.ok(order.toModel());
|
||||
}
|
||||
|
||||
@RequestMapping(path = ORDER_BASE, method = RequestMethod.POST, produces = "application/json")
|
||||
public ResponseEntity<Boolean> add(HttpServletRequest request,
|
||||
@RequestBody Order order) {
|
||||
@RequestBody OrderModel order) {
|
||||
logRequest(request);
|
||||
|
||||
if (validatorService.isInvalid(order)) {
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package de.htwsaar.webshop.model;
|
||||
|
||||
import jakarta.annotation.Nullable;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
public class OrderItemModel {
|
||||
@Nullable
|
||||
private Long id;
|
||||
|
||||
@Min(value = 1, message = "Amount must be at least 1")
|
||||
private Integer amount;
|
||||
|
||||
@NotNull
|
||||
private UUID article;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package de.htwsaar.webshop.model;
|
||||
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static de.htwsaar.webshop.util.TimeUtil.VALID_MIN_MILLIS_TIMESTAMP;
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@AllArgsConstructor
|
||||
public class OrderModel {
|
||||
@NotNull
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
private Long customerId;
|
||||
|
||||
@Min(VALID_MIN_MILLIS_TIMESTAMP)
|
||||
private Long time;
|
||||
|
||||
@NotNull
|
||||
private OrderStatus status;
|
||||
|
||||
@NotNull
|
||||
private List<OrderItemModel> orderItems;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.htwsaar.webshop.repository.entities;
|
||||
|
||||
import de.htwsaar.webshop.model.OrderModel;
|
||||
import de.htwsaar.webshop.model.OrderStatus;
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -32,4 +33,9 @@ public class Order {
|
||||
|
||||
@OneToMany(mappedBy = "order", orphanRemoval = true, fetch = FetchType.LAZY, cascade = CascadeType.ALL, targetEntity = OrderItem.class)
|
||||
private List<OrderItem> orderItems;
|
||||
|
||||
|
||||
public OrderModel toModel() {
|
||||
return new OrderModel(id, customer.getId(), time, status, orderItems.stream().map(OrderItem::toModel).toList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.htwsaar.webshop.repository.entities;
|
||||
|
||||
import de.htwsaar.webshop.model.OrderItemModel;
|
||||
import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -35,4 +36,8 @@ public class OrderItem {
|
||||
@JoinColumn(name = "article_id", referencedColumnName = "id", nullable = false)
|
||||
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL)
|
||||
private Article article;
|
||||
|
||||
public OrderItemModel toModel() {
|
||||
return new OrderItemModel(id, amount, article.getUuid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package de.htwsaar.webshop.service;
|
||||
|
||||
import de.htwsaar.webshop.model.OrderModel;
|
||||
import de.htwsaar.webshop.repository.entities.Order;
|
||||
|
||||
import java.util.List;
|
||||
@@ -7,6 +8,8 @@ import java.util.List;
|
||||
public interface OrderService {
|
||||
Order save(Order order);
|
||||
|
||||
Order save(OrderModel model);
|
||||
|
||||
void delete(Long orderId);
|
||||
|
||||
Order getOrderById(Long orderId);
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package de.htwsaar.webshop.service.impl;
|
||||
|
||||
import de.htwsaar.webshop.model.OrderItemModel;
|
||||
import de.htwsaar.webshop.model.OrderModel;
|
||||
import de.htwsaar.webshop.repository.OrderRepository;
|
||||
import de.htwsaar.webshop.repository.entities.Order;
|
||||
import de.htwsaar.webshop.repository.entities.OrderItem;
|
||||
import de.htwsaar.webshop.service.ArticleService;
|
||||
import de.htwsaar.webshop.service.CustomerService;
|
||||
import de.htwsaar.webshop.service.OrderService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -13,10 +18,14 @@ import java.util.List;
|
||||
@Slf4j
|
||||
public class OrderServiceImpl implements OrderService {
|
||||
private final OrderRepository orderRepository;
|
||||
private final CustomerService customerService;
|
||||
private final ArticleService articleService;
|
||||
|
||||
@Autowired
|
||||
public OrderServiceImpl(OrderRepository orderRepository) {
|
||||
public OrderServiceImpl(OrderRepository orderRepository, CustomerService customerService, ArticleService articleService) {
|
||||
this.orderRepository = orderRepository;
|
||||
this.customerService = customerService;
|
||||
this.articleService = articleService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -24,6 +33,28 @@ public class OrderServiceImpl implements OrderService {
|
||||
return orderRepository.save(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Order save(OrderModel model) {
|
||||
Order order = new Order(
|
||||
model.getId(),
|
||||
customerService.findById(model.getCustomerId()),
|
||||
model.getTime(),
|
||||
model.getStatus(),
|
||||
null
|
||||
);
|
||||
order.setOrderItems(
|
||||
model.getOrderItems().stream().map(oim -> this.from(oim, order)).toList()
|
||||
);
|
||||
log.info("Created Order from Model: {}", order);
|
||||
return save(order);
|
||||
}
|
||||
|
||||
OrderItem from(OrderItemModel model, Order order) {
|
||||
OrderItem orderItem = new OrderItem(model.getId(), model.getAmount(), order, articleService.findByUUID(model.getArticle()));
|
||||
log.info("Created OrderItem from Model: {}", orderItem);
|
||||
return orderItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long orderId) {
|
||||
orderRepository.deleteById(orderId);
|
||||
|
||||
Reference in New Issue
Block a user