feat: amount transaction and count of item

This commit is contained in:
ferdiansyah783
2024-07-27 16:47:33 +07:00
parent 4013b12ac9
commit 30aa206d80
9 changed files with 192 additions and 19 deletions
+47 -1
View File
@@ -3,8 +3,10 @@ package orders
import (
"context"
"furtuna-be/internal/common/logger"
"furtuna-be/internal/common/mycontext"
"furtuna-be/internal/entity"
"strings"
"time"
"go.uber.org/zap"
"gorm.io/gorm"
@@ -83,7 +85,7 @@ func (r *OrderRepository) Update(ctx context.Context, order *entity.Order) (*ent
return order, nil
}
func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.HistoryOrderSearch) (entity.HistoryOrderList, int, error) {
func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.OrderSearch) (entity.HistoryOrderList, int, error) {
var orders []*entity.HistoryOrderDB
var total int64
@@ -128,3 +130,47 @@ func (b *OrderRepository) GetAllHystoryOrders(ctx context.Context, req entity.Hi
return orders, int(total), nil
}
func (r *OrderRepository) CountSoldOfTicket(ctx mycontext.Context, req entity.OrderSearch) (*entity.TicketSoldDB, error) {
today := time.Now().Format("2006-01-02")
ticketCount := new(entity.TicketSoldDB)
query := r.db.Table("orders").
Select("sum(items.qty) as count").
Joins("left join order_items items on orders.id = items.order_id").
Where("orders.status = ?", "PAID").
Where("orders.created_at = ?", today)
if !req.IsAdmin {
query = query.Where("orders.partner_id = ?", req.PartnerID)
}
if err := query.Scan(&ticketCount).Error; err != nil {
logger.ContextLogger(ctx).Error("error when get count ticket", zap.Error(err))
return nil, err
}
return ticketCount, nil
}
func (r *OrderRepository) SumAmount(ctx mycontext.Context, req entity.OrderSearch) (*entity.OrderDB, error) {
amount := new(entity.OrderDB)
today := time.Now().Format("2006-01-02")
query := r.db.Table("orders").
Select("sum(amount) as amount").
Where("payment_type = ?", req.PaymentType).
Where("date(created_at) = ?", today).
Where("status = ?", "PAID")
if !req.IsAdmin {
query = query.Where("orders.partner_id = ?", req.PartnerID)
}
if err := query.Scan(&amount).Error; err != nil {
logger.ContextLogger(ctx).Error("error when get cash amount", zap.Error(err))
return nil, err
}
return amount, nil
}