add function to add item
This commit is contained in:
@@ -25,6 +25,7 @@ func NewInProgressOrderHandler(service inprogress_order.InProgressOrderService)
|
||||
func (h *InProgressOrderHandler) Route(group *gin.RouterGroup, jwt gin.HandlerFunc) {
|
||||
route := group.Group("/inprogress-order")
|
||||
route.POST("/save", jwt, h.Save)
|
||||
route.POST("/add", jwt, h.Add)
|
||||
route.GET("/list", jwt, h.GetByPartnerID)
|
||||
}
|
||||
|
||||
@@ -41,6 +42,11 @@ type CreateInProgressOrderRequest struct {
|
||||
InProgressOrderID int64 `json:"in_progress_order_id"`
|
||||
}
|
||||
|
||||
type AddItemOrderRequest struct {
|
||||
OrderItems []InProgressOrderItemRequest `json:"order_items" validate:"required,min=1,dive"`
|
||||
InProgressOrderID int64 `json:"in_progress_order_id"`
|
||||
}
|
||||
|
||||
type InProgressOrderItemRequest struct {
|
||||
ProductID int64 `json:"product_id" validate:"required"`
|
||||
Quantity int `json:"quantity" validate:"required,min=1"`
|
||||
@@ -104,6 +110,41 @@ func (h *InProgressOrderHandler) Save(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
func (h *InProgressOrderHandler) Add(c *gin.Context) {
|
||||
ctx := request.GetMyContext(c)
|
||||
|
||||
var req AddItemOrderRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.ErrorWrapper(c, errors.ErrorBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
validate := validator.New()
|
||||
if err := validate.Struct(req); err != nil {
|
||||
response.ErrorWrapper(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
orderItems := make([]entity.OrderItemRequest, len(req.OrderItems))
|
||||
for i, item := range req.OrderItems {
|
||||
orderItems[i] = entity.OrderItemRequest{
|
||||
ProductID: item.ProductID,
|
||||
Quantity: item.Quantity,
|
||||
}
|
||||
}
|
||||
|
||||
_, err := h.service.AddItems(ctx, req.InProgressOrderID, orderItems)
|
||||
if err != nil {
|
||||
response.ErrorWrapper(c, err)
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusCreated, response.BaseResponse{
|
||||
Success: true,
|
||||
Status: http.StatusCreated,
|
||||
})
|
||||
}
|
||||
|
||||
func mapToInProgressOrderResponse(order *entity.Order) map[string]interface{} {
|
||||
orderItems := make([]map[string]interface{}, len(order.OrderItems))
|
||||
for i, item := range order.OrderItems {
|
||||
|
||||
Reference in New Issue
Block a user