Преглед на файлове

Merge pull request #4 from blazejmakul/wip-order-service

Added more endpoints
Arek Wieteska преди 3 години
родител
ревизия
cc4aac8182

+ 5 - 0
src/main/java/com/example/plantsforyou/appuser/AppUser.java

@@ -1,5 +1,6 @@
 package com.example.plantsforyou.appuser;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -35,11 +36,15 @@ public class AppUser implements UserDetails {
     private String firstName;
     private String lastName;
     private String email;
+    @JsonIgnore
     private String password;
     @Enumerated(EnumType.STRING)
     private AppUserRole appUserRole;
+    @JsonIgnore
     private Boolean locked = false;
+    @JsonIgnore
     private Boolean enabled = false;
+
     private Boolean oAuth = false;
 
 

+ 27 - 0
src/main/java/com/example/plantsforyou/dto/UpdateOrderDto.java

@@ -0,0 +1,27 @@
+package com.example.plantsforyou.dto;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+public class UpdateOrderDto {
+
+    private String firstName;
+
+    private String lastName;
+
+    private String email;
+
+    private String postalCode;
+
+    private String street;
+
+    private String city;
+
+    private String phoneNumber;
+
+    private String status;
+}

+ 2 - 0
src/main/java/com/example/plantsforyou/order/Order.java

@@ -3,6 +3,7 @@ package com.example.plantsforyou.order;
 import com.example.plantsforyou.appuser.AppUser;
 import com.example.plantsforyou.items_order.ItemOrder;
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
@@ -15,6 +16,7 @@ import java.util.List;
 @Setter
 @NoArgsConstructor
 @Entity
+@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
 @Table(name = "orders")
 public class Order {
     //todo: validation

+ 11 - 4
src/main/java/com/example/plantsforyou/order/OrderController.java

@@ -4,14 +4,12 @@ import com.example.plantsforyou.appuser.AppUser;
 import com.example.plantsforyou.appuser.AppUserService;
 import com.example.plantsforyou.cart.CartService;
 import com.example.plantsforyou.dto.PlaceOrderDto;
+import com.example.plantsforyou.dto.UpdateOrderDto;
 import com.example.plantsforyou.exceptions.RejectedRequestException;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
@@ -45,6 +43,15 @@ public class OrderController {
         AppUser appUser = appUserService.getUserFromToken(token);
         return new ResponseEntity<>(orderService.getAllOrdersFromUserId(appUser.getId()), HttpStatus.OK);
     }
+    @GetMapping("/{orderId}")
+    public ResponseEntity<Order>getOrderById(@PathVariable("orderId") Long id){
+        return new ResponseEntity<>(orderService.getOrderById(id), HttpStatus.OK);
+    }
+
+    @PatchMapping("/{orderId}")
+    public ResponseEntity<Order>editOrderById(@RequestBody UpdateOrderDto updateOrderDto, @PathVariable("orderId") Long id) throws RejectedRequestException {
+        return new ResponseEntity<>(orderService.editOrderById(updateOrderDto,id), HttpStatus.OK);
+    }
 
     @GetMapping("/all")
     public ResponseEntity<List<Order>> getAllOrdersFromBase(){

+ 3 - 0
src/main/java/com/example/plantsforyou/order/OrderRepository.java

@@ -1,9 +1,12 @@
 package com.example.plantsforyou.order;
 
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
+@Transactional
 public interface OrderRepository extends JpaRepository<Order, Long> {
     List<Order> findAllByAppUserIdOrderByCreatedDateDesc(Long id);
+    Order findOrderById(Long id);
 }

+ 21 - 1
src/main/java/com/example/plantsforyou/order/OrderService.java

@@ -5,10 +5,12 @@ import com.example.plantsforyou.cart.CartService;
 import com.example.plantsforyou.dto.CartDto;
 import com.example.plantsforyou.dto.ItemCartDto;
 import com.example.plantsforyou.dto.PlaceOrderDto;
+import com.example.plantsforyou.dto.UpdateOrderDto;
 import com.example.plantsforyou.exceptions.RejectedRequestException;
 import com.example.plantsforyou.items_order.ItemOrder;
 import com.example.plantsforyou.items_order.ItemOrderRepository;
 import com.example.plantsforyou.plant.PlantService;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -28,7 +30,7 @@ public class OrderService {
         this.plantService = plantService;
     }
 
-    public void placeOrder(PlaceOrderDto placeOrderDto, AppUser appUser) throws RejectedRequestException {
+    public Long placeOrder(PlaceOrderDto placeOrderDto, AppUser appUser) throws RejectedRequestException {
         CartDto cartDto = cartService.getAllItemsFromCart(appUser);
         List<ItemCartDto> itemCartDtos = cartDto.getPlantsInCart();
 
@@ -57,6 +59,7 @@ public class OrderService {
         }
 
         cartService.deleteItemsFromCart(appUser);
+        return order.getId();
 
     }
     List<Order> getAllOrdersFromUserId(Long id){
@@ -66,4 +69,21 @@ public class OrderService {
     public List<Order> getAllOrders() {
         return orderRepository.findAll();
     }
+
+    public Order editOrderById(UpdateOrderDto updateOrderDto, Long id) throws RejectedRequestException {
+        if(!orderRepository.existsById(id)){
+            throw new RejectedRequestException("Order does not exist", HttpStatus.BAD_REQUEST);
+        }
+        Order order = orderRepository.getById(id);
+        order.setStatus(updateOrderDto.getStatus());
+        order.setCity(updateOrderDto.getCity());
+        order.setPhoneNumber(updateOrderDto.getPhoneNumber());
+        order.setStreet(updateOrderDto.getStreet());
+        order.setPostalCode(updateOrderDto.getPostalCode());
+        return order;
+    }
+
+    public Order getOrderById(Long id) {
+        return orderRepository.findOrderById(id);
+    }
 }