create order and change order status
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
package _11.asktpk.artisanconnectbackend.controller;
|
||||||
|
|
||||||
|
import _11.asktpk.artisanconnectbackend.dto.ClientDTO;
|
||||||
|
import _11.asktpk.artisanconnectbackend.dto.OrderDTO;
|
||||||
|
import _11.asktpk.artisanconnectbackend.dto.OrderStatusDTO;
|
||||||
|
import _11.asktpk.artisanconnectbackend.service.OrderService;
|
||||||
|
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/v1/orders")
|
||||||
|
public class OrderController {
|
||||||
|
|
||||||
|
private final OrderService orderService;
|
||||||
|
|
||||||
|
public OrderController(OrderService orderService) {
|
||||||
|
this.orderService = orderService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public ResponseEntity addClient(@RequestBody OrderDTO orderDTO) {
|
||||||
|
return new ResponseEntity<>(orderService.addOrder(orderDTO), HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/changeStatus")
|
||||||
|
public ResponseEntity changeStatus(@RequestBody OrderStatusDTO orderStatusDTO) {
|
||||||
|
return new ResponseEntity<>(orderService.changeOrderStatus(orderStatusDTO.getId(),orderStatusDTO.getStatus()), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package _11.asktpk.artisanconnectbackend.dto;
|
||||||
|
|
||||||
|
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class OrderDTO {
|
||||||
|
private Long clientId;
|
||||||
|
private Long noticeId;
|
||||||
|
private Enums.OrderType orderType;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package _11.asktpk.artisanconnectbackend.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter @Setter
|
||||||
|
public class OrderStatusDTO {
|
||||||
|
public long id;
|
||||||
|
public Enums.OrderStatus status;
|
||||||
|
}
|
||||||
@@ -33,5 +33,5 @@ public class Client {
|
|||||||
// private List<Notice> notices;
|
// private List<Notice> notices;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL)
|
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL)
|
||||||
private List<Orders> orders;
|
private List<Order> orders;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class Notice {
|
|||||||
private List<AttributesNotice> attributesNotices;
|
private List<AttributesNotice> attributesNotices;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "notice", cascade = CascadeType.ALL)
|
@OneToMany(mappedBy = "notice", cascade = CascadeType.ALL)
|
||||||
private List<Orders> orders;
|
private List<Order> orders;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "notice", cascade = CascadeType.ALL)
|
@OneToMany(mappedBy = "notice", cascade = CascadeType.ALL)
|
||||||
private List<Payments> payments;
|
private List<Payments> payments;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package _11.asktpk.artisanconnectbackend.entities;
|
package _11.asktpk.artisanconnectbackend.entities;
|
||||||
|
|
||||||
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
||||||
import _11.asktpk.artisanconnectbackend.utils.Enums.Status;
|
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -13,7 +12,7 @@ import java.time.LocalDateTime;
|
|||||||
@Table(name = "orders")
|
@Table(name = "orders")
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class Orders {
|
public class Order {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
@@ -13,7 +13,7 @@ public class Payments {
|
|||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "id_order")
|
@JoinColumn(name = "id_order")
|
||||||
private Orders order;
|
private Order order;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "id_notice")
|
@JoinColumn(name = "id_notice")
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package _11.asktpk.artisanconnectbackend.repository;
|
||||||
|
|
||||||
|
import _11.asktpk.artisanconnectbackend.entities.Order;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface OrderRepository extends JpaRepository<Order, Long> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
package _11.asktpk.artisanconnectbackend.service;
|
||||||
|
|
||||||
|
import _11.asktpk.artisanconnectbackend.dto.OrderDTO;
|
||||||
|
import _11.asktpk.artisanconnectbackend.entities.Client;
|
||||||
|
import _11.asktpk.artisanconnectbackend.entities.Notice;
|
||||||
|
import _11.asktpk.artisanconnectbackend.repository.ClientRepository;
|
||||||
|
import _11.asktpk.artisanconnectbackend.repository.NoticeRepository;
|
||||||
|
import _11.asktpk.artisanconnectbackend.repository.OrderRepository;
|
||||||
|
import _11.asktpk.artisanconnectbackend.utils.Enums;
|
||||||
|
import jakarta.persistence.EntityNotFoundException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import _11.asktpk.artisanconnectbackend.entities.Order;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class OrderService {
|
||||||
|
|
||||||
|
private final OrderRepository orderRepository;
|
||||||
|
private final ClientRepository clientRepository;
|
||||||
|
private final NoticeRepository noticeRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public OrderService(OrderRepository orderRepository, ClientRepository clientRepository, NoticeRepository noticeRepository) {
|
||||||
|
this.orderRepository = orderRepository;
|
||||||
|
this.clientRepository = clientRepository;
|
||||||
|
this.noticeRepository = noticeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Order fromDTO(OrderDTO orderDTO) {
|
||||||
|
Order order = new Order();
|
||||||
|
order.setOrderType(orderDTO.getOrderType());
|
||||||
|
order.setStatus(Enums.OrderStatus.PENDING);
|
||||||
|
if(orderDTO.getOrderType() == Enums.OrderType.ACTIVATION){
|
||||||
|
order.setAmount(10.00);
|
||||||
|
}else{
|
||||||
|
order.setAmount(8.00);
|
||||||
|
}
|
||||||
|
|
||||||
|
order.setCreatedAt(LocalDateTime.now()
|
||||||
|
);
|
||||||
|
order.setUpdatedAt(LocalDateTime.now()
|
||||||
|
);
|
||||||
|
|
||||||
|
Client client = clientRepository.findById(orderDTO.getClientId())
|
||||||
|
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono klienta o ID: " + orderDTO.getClientId()));
|
||||||
|
order.setClient(client);
|
||||||
|
|
||||||
|
Notice notice = noticeRepository.findById(orderDTO.getNoticeId())
|
||||||
|
.orElseThrow(() -> new EntityNotFoundException("Nie znaleziono ogłoszenia o ID: " + orderDTO.getNoticeId()));
|
||||||
|
order.setNotice(notice);
|
||||||
|
|
||||||
|
return order;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Long addOrder(OrderDTO orderDTO) {
|
||||||
|
Order order = fromDTO(orderDTO);
|
||||||
|
return orderRepository.save(order).getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long changeOrderStatus(Long id, Enums.OrderStatus status) {
|
||||||
|
Order order = orderRepository.findById(id)
|
||||||
|
.orElseThrow(() -> new IllegalArgumentException("Nie znaleziono zamówienia o ID: " + id));
|
||||||
|
|
||||||
|
order.setStatus(status);
|
||||||
|
|
||||||
|
order = orderRepository.save(order);
|
||||||
|
|
||||||
|
return order.getId();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user