add orders

This commit is contained in:
Aditya Siregar
2025-08-06 00:42:57 +07:00
parent 0a44135fb6
commit 3696451dc6
6 changed files with 326 additions and 82 deletions
+37 -65
View File
@@ -3,30 +3,22 @@ package transformer
import (
"apskel-pos-be/internal/contract"
"apskel-pos-be/internal/models"
"apskel-pos-be/internal/util"
"fmt"
"time"
)
const ddmmyyyy = "02-01-2006"
// PaymentMethodAnalyticsContractToModel converts contract request to model
func PaymentMethodAnalyticsContractToModel(req *contract.PaymentMethodAnalyticsRequest) *models.PaymentMethodAnalyticsRequest {
var dateFrom, dateTo time.Time
if req.DateFrom != "" {
df, err := time.Parse(ddmmyyyy, req.DateFrom)
if err == nil {
dateFrom = df
}
}
if req.DateTo != "" {
dt, err := time.Parse(ddmmyyyy, req.DateTo)
if err == nil {
dateTo = dt
}
}
if req.DateFrom == req.DateTo {
dateTo = dateTo.AddDate(0, 0, 1)
if fromTime, toTime, err := util.ParseDateRangeToJakartaTime(req.DateFrom, req.DateTo); err == nil {
if fromTime != nil {
dateFrom = *fromTime
}
if toTime != nil {
dateTo = *toTime
}
}
return &models.PaymentMethodAnalyticsRequest{
@@ -75,21 +67,14 @@ func PaymentMethodAnalyticsModelToContract(resp *models.PaymentMethodAnalyticsRe
func SalesAnalyticsContractToModel(req *contract.SalesAnalyticsRequest) *models.SalesAnalyticsRequest {
var dateFrom, dateTo time.Time
if req.DateFrom != "" {
df, err := time.Parse(ddmmyyyy, req.DateFrom)
if err == nil {
dateFrom = df
}
}
if req.DateTo != "" {
dt, err := time.Parse(ddmmyyyy, req.DateTo)
if err == nil {
dateTo = dt
}
}
if req.DateFrom == req.DateTo {
dateTo = dateTo.AddDate(0, 0, 1)
if fromTime, toTime, err := util.ParseDateRangeToJakartaTime(req.DateFrom, req.DateTo); err == nil {
if fromTime != nil {
dateFrom = *fromTime
}
if toTime != nil {
dateTo = *toTime
}
}
return &models.SalesAnalyticsRequest{
@@ -142,21 +127,14 @@ func SalesAnalyticsModelToContract(resp *models.SalesAnalyticsResponse) *contrac
// ProductAnalyticsContractToModel converts contract request to model
func ProductAnalyticsContractToModel(req *contract.ProductAnalyticsRequest) *models.ProductAnalyticsRequest {
var dateFrom, dateTo time.Time
if req.DateFrom != "" {
df, err := time.Parse(ddmmyyyy, req.DateFrom)
if err == nil {
dateFrom = df
}
}
if req.DateTo != "" {
dt, err := time.Parse(ddmmyyyy, req.DateTo)
if err == nil {
dateTo = dt
}
}
if req.DateFrom == req.DateTo {
dateTo = dateTo.AddDate(0, 0, 1)
if fromTime, toTime, err := util.ParseDateRangeToJakartaTime(req.DateFrom, req.DateTo); err == nil {
if fromTime != nil {
dateFrom = *fromTime
}
if toTime != nil {
dateTo = *toTime
}
}
return &models.ProductAnalyticsRequest{
@@ -200,21 +178,15 @@ func ProductAnalyticsModelToContract(resp *models.ProductAnalyticsResponse) *con
// DashboardAnalyticsContractToModel converts contract request to model
func DashboardAnalyticsContractToModel(req *contract.DashboardAnalyticsRequest) *models.DashboardAnalyticsRequest {
var dateFrom, dateTo time.Time
if req.DateFrom != "" {
df, err := time.Parse(ddmmyyyy, req.DateFrom)
if err == nil {
dateFrom = df
}
}
if req.DateTo != "" {
dt, err := time.Parse(ddmmyyyy, req.DateTo)
if err == nil {
dateTo = dt
}
}
if req.DateFrom == req.DateTo {
dateTo = dateTo.AddDate(0, 0, 1)
// Parse date range using utility function
if fromTime, toTime, err := util.ParseDateRangeToJakartaTime(req.DateFrom, req.DateTo); err == nil {
if fromTime != nil {
dateFrom = *fromTime
}
if toTime != nil {
dateTo = *toTime
}
}
return &models.DashboardAnalyticsRequest{
@@ -296,21 +268,21 @@ func ProfitLossAnalyticsContractToModel(req *contract.ProfitLossAnalyticsRequest
return nil, fmt.Errorf("request cannot be nil")
}
dateFrom, err := time.Parse("02-01-2006", req.DateFrom)
// Parse date range using utility function
dateFrom, dateTo, err := util.ParseDateRangeToJakartaTime(req.DateFrom, req.DateTo)
if err != nil {
return nil, fmt.Errorf("invalid date_from format: %w", err)
return nil, fmt.Errorf("invalid date format: %w", err)
}
dateTo, err := time.Parse("02-01-2006", req.DateTo)
if err != nil {
return nil, fmt.Errorf("invalid date_to format: %w", err)
if dateFrom == nil || dateTo == nil {
return nil, fmt.Errorf("both date_from and date_to are required")
}
return &models.ProfitLossAnalyticsRequest{
OrganizationID: req.OrganizationID,
OutletID: req.OutletID,
DateFrom: dateFrom,
DateTo: dateTo,
DateFrom: *dateFrom,
DateTo: *dateTo,
GroupBy: req.GroupBy,
}, nil
}