121 lines
4.1 KiB
Go
121 lines
4.1 KiB
Go
package transformer
|
|
|
|
import (
|
|
"apskel-pos-be/internal/contract"
|
|
"apskel-pos-be/internal/models"
|
|
)
|
|
|
|
type TableTransformer struct{}
|
|
|
|
func NewTableTransformer() *TableTransformer {
|
|
return &TableTransformer{}
|
|
}
|
|
|
|
func (t *TableTransformer) ToContract(model models.TableResponse) *contract.TableResponse {
|
|
response := &contract.TableResponse{
|
|
ID: model.ID,
|
|
OrganizationID: model.OrganizationID,
|
|
OutletID: model.OutletID,
|
|
TableName: model.TableName,
|
|
StartTime: model.StartTime,
|
|
Status: string(model.Status),
|
|
OrderID: model.OrderID,
|
|
PaymentAmount: model.PaymentAmount,
|
|
PositionX: model.PositionX,
|
|
PositionY: model.PositionY,
|
|
Capacity: model.Capacity,
|
|
IsActive: model.IsActive,
|
|
Metadata: model.Metadata,
|
|
CreatedAt: model.CreatedAt,
|
|
UpdatedAt: model.UpdatedAt,
|
|
}
|
|
|
|
if model.Order != nil {
|
|
response.Order = &contract.OrderResponse{
|
|
ID: model.Order.ID,
|
|
OrganizationID: model.Order.OrganizationID,
|
|
OutletID: model.Order.OutletID,
|
|
UserID: model.Order.UserID,
|
|
CustomerID: model.Order.CustomerID,
|
|
OrderNumber: model.Order.OrderNumber,
|
|
TableNumber: model.Order.TableNumber,
|
|
OrderType: string(model.Order.OrderType),
|
|
Status: string(model.Order.Status),
|
|
Subtotal: model.Order.Subtotal,
|
|
TaxAmount: model.Order.TaxAmount,
|
|
DiscountAmount: model.Order.DiscountAmount,
|
|
TotalAmount: model.Order.TotalAmount,
|
|
TotalCost: model.Order.TotalCost,
|
|
PaymentStatus: string(model.Order.PaymentStatus),
|
|
RefundAmount: model.Order.RefundAmount,
|
|
IsVoid: model.Order.IsVoid,
|
|
IsRefund: model.Order.IsRefund,
|
|
VoidReason: model.Order.VoidReason,
|
|
VoidedAt: model.Order.VoidedAt,
|
|
VoidedBy: model.Order.VoidedBy,
|
|
RefundReason: model.Order.RefundReason,
|
|
RefundedAt: model.Order.RefundedAt,
|
|
RefundedBy: model.Order.RefundedBy,
|
|
Metadata: model.Order.Metadata,
|
|
CreatedAt: model.Order.CreatedAt,
|
|
UpdatedAt: model.Order.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
return response
|
|
}
|
|
|
|
func (t *TableTransformer) ToModel(contract contract.TableResponse) *models.TableResponse {
|
|
response := &models.TableResponse{
|
|
ID: contract.ID,
|
|
OrganizationID: contract.OrganizationID,
|
|
OutletID: contract.OutletID,
|
|
TableName: contract.TableName,
|
|
StartTime: contract.StartTime,
|
|
Status: models.TableStatus(contract.Status),
|
|
OrderID: contract.OrderID,
|
|
PaymentAmount: contract.PaymentAmount,
|
|
PositionX: contract.PositionX,
|
|
PositionY: contract.PositionY,
|
|
Capacity: contract.Capacity,
|
|
IsActive: contract.IsActive,
|
|
Metadata: contract.Metadata,
|
|
CreatedAt: contract.CreatedAt,
|
|
UpdatedAt: contract.UpdatedAt,
|
|
}
|
|
|
|
if contract.Order != nil {
|
|
response.Order = &models.OrderResponse{
|
|
ID: contract.Order.ID,
|
|
OrganizationID: contract.Order.OrganizationID,
|
|
OutletID: contract.Order.OutletID,
|
|
UserID: contract.Order.UserID,
|
|
CustomerID: contract.Order.CustomerID,
|
|
OrderNumber: contract.Order.OrderNumber,
|
|
TableNumber: contract.Order.TableNumber,
|
|
OrderType: models.OrderType(contract.Order.OrderType),
|
|
Status: models.OrderStatus(contract.Order.Status),
|
|
Subtotal: contract.Order.Subtotal,
|
|
TaxAmount: contract.Order.TaxAmount,
|
|
DiscountAmount: contract.Order.DiscountAmount,
|
|
TotalAmount: contract.Order.TotalAmount,
|
|
TotalCost: contract.Order.TotalCost,
|
|
PaymentStatus: models.PaymentStatus(contract.Order.PaymentStatus),
|
|
RefundAmount: contract.Order.RefundAmount,
|
|
IsVoid: contract.Order.IsVoid,
|
|
IsRefund: contract.Order.IsRefund,
|
|
VoidReason: contract.Order.VoidReason,
|
|
VoidedAt: contract.Order.VoidedAt,
|
|
VoidedBy: contract.Order.VoidedBy,
|
|
RefundReason: contract.Order.RefundReason,
|
|
RefundedAt: contract.Order.RefundedAt,
|
|
RefundedBy: contract.Order.RefundedBy,
|
|
Metadata: contract.Order.Metadata,
|
|
CreatedAt: contract.Order.CreatedAt,
|
|
UpdatedAt: contract.Order.UpdatedAt,
|
|
}
|
|
}
|
|
|
|
return response
|
|
}
|