Mhamdans17 commited on
Commit
a90354c
·
1 Parent(s): 0107a15

feat: show member name and points earned in payment receipt

Browse files
controllers/company_controller.go CHANGED
@@ -235,7 +235,6 @@ func UpdateMyCompanyPoints(c *gin.Context) {
235
  c.JSON(http.StatusBadRequest, gin.H{"detail": "Data tidak valid"})
236
  return
237
  }
238
-
239
  // Hapus point rules yang lama
240
  config.DB.Where("company_id = ?", *user.CompanyID).Delete(&models.PointRule{})
241
 
 
235
  c.JSON(http.StatusBadRequest, gin.H{"detail": "Data tidak valid"})
236
  return
237
  }
 
238
  // Hapus point rules yang lama
239
  config.DB.Where("company_id = ?", *user.CompanyID).Delete(&models.PointRule{})
240
 
controllers/order_controller.go CHANGED
@@ -71,7 +71,6 @@ type MidtransPaymentRequest struct {
71
  ServedBy string `json:"served_by"`
72
  MemberID *uint `json:"member_id"`
73
  }
74
-
75
  type PaymentStatusResponse struct {
76
  OrderID uint `json:"order_id"`
77
  OrderNumber string `json:"order_number"`
@@ -80,6 +79,8 @@ type PaymentStatusResponse struct {
80
  TotalAmount int `json:"total_amount"`
81
  PaidAmount int `json:"paid_amount"`
82
  ChangeAmount int `json:"change_amount"`
 
 
83
  }
84
 
85
  func generateOrderNumber() string {
@@ -436,6 +437,11 @@ func PayCash(c *gin.Context) {
436
  }()
437
  }
438
 
 
 
 
 
 
439
  c.JSON(http.StatusOK, PaymentStatusResponse{
440
  OrderID: order.ID,
441
  OrderNumber: order.OrderNumber,
@@ -444,6 +450,8 @@ func PayCash(c *gin.Context) {
444
  TotalAmount: order.TotalAmount,
445
  PaidAmount: order.PaidAmount,
446
  ChangeAmount: order.ChangeAmount,
 
 
447
  })
448
  }
449
 
@@ -714,11 +722,16 @@ func GetPaymentStatus(c *gin.Context) {
714
  }
715
 
716
  var order models.Order
717
- if err := config.DB.Where("id = ? AND company_id = ?", orderID, *user.CompanyID).First(&order).Error; err != nil {
718
  c.JSON(http.StatusNotFound, gin.H{"detail": "Order tidak ditemukan"})
719
  return
720
  }
721
 
 
 
 
 
 
722
  c.JSON(http.StatusOK, PaymentStatusResponse{
723
  OrderID: order.ID,
724
  OrderNumber: order.OrderNumber,
@@ -727,6 +740,8 @@ func GetPaymentStatus(c *gin.Context) {
727
  TotalAmount: order.TotalAmount,
728
  PaidAmount: order.PaidAmount,
729
  ChangeAmount: order.ChangeAmount,
 
 
730
  })
731
  }
732
 
@@ -837,6 +852,11 @@ func awardPoints(tx *gorm.DB, order *models.Order, company *models.Company) {
837
  if err := tx.First(&member, *order.MemberID).Error; err == nil {
838
  member.Points += pointsToAdd
839
  tx.Save(&member)
 
 
 
 
 
840
  log.Printf("[POINTS] Member %s (+%d poin dari transaksi %d berdasarkan rule min %d)", member.Name, pointsToAdd, order.TotalAmount, matchedRule.MinAmount)
841
  }
842
  }
 
71
  ServedBy string `json:"served_by"`
72
  MemberID *uint `json:"member_id"`
73
  }
 
74
  type PaymentStatusResponse struct {
75
  OrderID uint `json:"order_id"`
76
  OrderNumber string `json:"order_number"`
 
79
  TotalAmount int `json:"total_amount"`
80
  PaidAmount int `json:"paid_amount"`
81
  ChangeAmount int `json:"change_amount"`
82
+ PointsEarned int `json:"points_earned,omitempty"`
83
+ MemberName string `json:"member_name,omitempty"`
84
  }
85
 
86
  func generateOrderNumber() string {
 
437
  }()
438
  }
439
 
440
+ memberName := ""
441
+ if order.Member != nil {
442
+ memberName = order.Member.Name
443
+ }
444
+
445
  c.JSON(http.StatusOK, PaymentStatusResponse{
446
  OrderID: order.ID,
447
  OrderNumber: order.OrderNumber,
 
450
  TotalAmount: order.TotalAmount,
451
  PaidAmount: order.PaidAmount,
452
  ChangeAmount: order.ChangeAmount,
453
+ PointsEarned: order.PointsEarned,
454
+ MemberName: memberName,
455
  })
456
  }
457
 
 
722
  }
723
 
724
  var order models.Order
725
+ if err := config.DB.Preload("Member").Where("id = ? AND company_id = ?", orderID, *user.CompanyID).First(&order).Error; err != nil {
726
  c.JSON(http.StatusNotFound, gin.H{"detail": "Order tidak ditemukan"})
727
  return
728
  }
729
 
730
+ memberName := ""
731
+ if order.Member != nil {
732
+ memberName = order.Member.Name
733
+ }
734
+
735
  c.JSON(http.StatusOK, PaymentStatusResponse{
736
  OrderID: order.ID,
737
  OrderNumber: order.OrderNumber,
 
740
  TotalAmount: order.TotalAmount,
741
  PaidAmount: order.PaidAmount,
742
  ChangeAmount: order.ChangeAmount,
743
+ PointsEarned: order.PointsEarned,
744
+ MemberName: memberName,
745
  })
746
  }
747
 
 
852
  if err := tx.First(&member, *order.MemberID).Error; err == nil {
853
  member.Points += pointsToAdd
854
  tx.Save(&member)
855
+
856
+ order.PointsEarned = pointsToAdd
857
+ order.Member = &member
858
+ tx.Save(order)
859
+
860
  log.Printf("[POINTS] Member %s (+%d poin dari transaksi %d berdasarkan rule min %d)", member.Name, pointsToAdd, order.TotalAmount, matchedRule.MinAmount)
861
  }
862
  }
models/models.go CHANGED
@@ -137,6 +137,7 @@ type Order struct {
137
  ServedBy string `gorm:"type:varchar(100)" json:"served_by"`
138
  CustomerName string `gorm:"type:varchar(100)" json:"customer_name"`
139
  CustomerPhone string `gorm:"type:varchar(50)" json:"customer_phone"`
 
140
  Items []OrderItem `gorm:"foreignKey:OrderID;constraint:OnDelete:CASCADE" json:"items"`
141
  }
142
 
 
137
  ServedBy string `gorm:"type:varchar(100)" json:"served_by"`
138
  CustomerName string `gorm:"type:varchar(100)" json:"customer_name"`
139
  CustomerPhone string `gorm:"type:varchar(50)" json:"customer_phone"`
140
+ PointsEarned int `gorm:"default:0" json:"points_earned"`
141
  Items []OrderItem `gorm:"foreignKey:OrderID;constraint:OnDelete:CASCADE" json:"items"`
142
  }
143