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 +0 -1
- controllers/order_controller.go +22 -2
- models/models.go +1 -0
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 |
|