update order

This commit is contained in:
aditya.siregar 2025-05-06 00:40:43 +07:00
parent f98200f76b
commit 93ddfdaecc
5 changed files with 31 additions and 15 deletions

View File

@ -30,6 +30,10 @@ type Order struct {
InProgressOrderID int64 InProgressOrderID int64
} }
func (o *Order) IsMemberOrder() bool {
return o.CustomerID != nil && *o.CustomerID > 0
}
type OrderDB struct { type OrderDB struct {
Order Order
} }

View File

@ -160,35 +160,35 @@ func (h *Handler) GetOrderHistory(c *gin.Context) {
startDateStr := c.Query("start_date") startDateStr := c.Query("start_date")
endDateStr := c.Query("end_date") endDateStr := c.Query("end_date")
// Build search request
searchReq := entity.SearchRequest{} searchReq := entity.SearchRequest{}
// Set status if provided
if status != "" { if status != "" {
searchReq.Status = status searchReq.Status = status
} }
// Parse and set limit limit := 20
limit := 10
if limitStr != "" { if limitStr != "" {
parsedLimit, err := strconv.Atoi(limitStr) parsedLimit, err := strconv.Atoi(limitStr)
if err == nil && parsedLimit > 0 { if err == nil && parsedLimit > 0 {
limit = parsedLimit limit = parsedLimit
} }
} }
if limit > 20 {
limit = 20 if limit > 100 {
limit = 100
} }
searchReq.Limit = limit searchReq.Limit = limit
// Parse and set offset
offset := 0 offset := 0
if offsetStr != "" { if offsetStr != "" {
parsedOffset, err := strconv.Atoi(offsetStr) parsedOffset, err := strconv.Atoi(offsetStr)
if err == nil && parsedOffset >= 0 { if err == nil && parsedOffset >= 0 {
offset = parsedOffset offset = parsedOffset
} }
} }
searchReq.Offset = offset searchReq.Offset = offset
if startDateStr != "" { if startDateStr != "" {
@ -228,6 +228,8 @@ func (h *Handler) GetOrderHistory(c *gin.Context) {
responseData = append(responseData, response.OrderHistoryResponse{ responseData = append(responseData, response.OrderHistoryResponse{
ID: order.ID, ID: order.ID,
CustomerName: order.CustomerName, CustomerName: order.CustomerName,
CustomerID: order.CustomerID,
IsMember: order.IsMemberOrder(),
Status: order.Status, Status: order.Status,
Amount: order.Amount, Amount: order.Amount,
Total: order.Total, Total: order.Total,

View File

@ -190,6 +190,8 @@ type OrderDetailItem struct {
type OrderHistoryResponse struct { type OrderHistoryResponse struct {
ID int64 `json:"id"` ID int64 `json:"id"`
IsMember bool `json:"is_member"`
CustomerID *int64 `json:"customer_id"`
CustomerName string `json:"customer_name"` CustomerName string `json:"customer_name"`
Status string `json:"status"` Status string `json:"status"`
Amount float64 `json:"amount"` Amount float64 `json:"amount"`

View File

@ -102,14 +102,9 @@ func MapToOrderResponse(result *entity.OrderResponse) OrderResponse {
func MapToOrderItemResponses(items []entity.OrderItem) []OrderItemResponse { func MapToOrderItemResponses(items []entity.OrderItem) []OrderItemResponse {
result := make([]OrderItemResponse, 0, len(items)) result := make([]OrderItemResponse, 0, len(items))
for _, item := range items { for _, item := range items {
productName := ""
if item.Product != nil {
productName = item.Product.Name
}
result = append(result, OrderItemResponse{ result = append(result, OrderItemResponse{
ProductID: item.ItemID, ProductID: item.ItemID,
ProductName: productName, ProductName: item.ItemName,
Price: item.Price, Price: item.Price,
Quantity: item.Quantity, Quantity: item.Quantity,
Subtotal: item.Price * float64(item.Quantity), Subtotal: item.Price * float64(item.Quantity),

View File

@ -100,7 +100,6 @@ func (r *orderRepository) Create(ctx mycontext.Context, order *entity.Order) (*e
item.ID = itemDB.ID item.ID = itemDB.ID
} }
// Commit the transaction
if err := tx.Commit().Error; err != nil { if err := tx.Commit().Error; err != nil {
return nil, errors.Wrap(err, "failed to commit transaction") return nil, errors.Wrap(err, "failed to commit transaction")
} }
@ -254,6 +253,20 @@ func (r *orderRepository) toOrderDBModel(order *entity.Order) models.OrderDB {
} }
func (r *orderRepository) toDomainOrderModel(dbModel *models.OrderDB) *entity.Order { func (r *orderRepository) toDomainOrderModel(dbModel *models.OrderDB) *entity.Order {
orderItems := make([]entity.OrderItem, 0, len(dbModel.OrderItems))
for _, itemDB := range dbModel.OrderItems {
orderItems = append(orderItems, entity.OrderItem{
ItemID: itemDB.ItemID,
ItemType: itemDB.ItemType,
ItemName: itemDB.ItemName,
Price: itemDB.Price,
Quantity: itemDB.Quantity,
CreatedBy: itemDB.CreatedBy,
CreatedAt: itemDB.CreatedAt,
})
}
return &entity.Order{ return &entity.Order{
ID: dbModel.ID, ID: dbModel.ID,
PartnerID: dbModel.PartnerID, PartnerID: dbModel.PartnerID,
@ -268,7 +281,7 @@ func (r *orderRepository) toDomainOrderModel(dbModel *models.OrderDB) *entity.Or
CreatedBy: dbModel.CreatedBy, CreatedBy: dbModel.CreatedBy,
CreatedAt: dbModel.CreatedAt, CreatedAt: dbModel.CreatedAt,
UpdatedAt: dbModel.UpdatedAt, UpdatedAt: dbModel.UpdatedAt,
OrderItems: []entity.OrderItem{}, OrderItems: orderItems,
CustomerName: dbModel.CustomerName, CustomerName: dbModel.CustomerName,
TableNumber: dbModel.TableNumber, TableNumber: dbModel.TableNumber,
OrderType: dbModel.OrderType, OrderType: dbModel.OrderType,