2025-07-18 20:10:29 +07:00
|
|
|
package mappers
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"apskel-pos-be/internal/entities"
|
|
|
|
|
"apskel-pos-be/internal/models"
|
2025-08-13 21:02:26 +07:00
|
|
|
"github.com/google/uuid"
|
2025-07-18 20:10:29 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func InventoryEntityToModel(entity *entities.Inventory) *models.Inventory {
|
|
|
|
|
if entity == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &models.Inventory{
|
|
|
|
|
ID: entity.ID,
|
|
|
|
|
OutletID: entity.OutletID,
|
|
|
|
|
ProductID: entity.ProductID,
|
|
|
|
|
Quantity: entity.Quantity,
|
|
|
|
|
ReorderLevel: entity.ReorderLevel,
|
|
|
|
|
UpdatedAt: entity.UpdatedAt,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InventoryModelToEntity(model *models.Inventory) *entities.Inventory {
|
|
|
|
|
if model == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &entities.Inventory{
|
|
|
|
|
ID: model.ID,
|
|
|
|
|
OutletID: model.OutletID,
|
|
|
|
|
ProductID: model.ProductID,
|
|
|
|
|
Quantity: model.Quantity,
|
|
|
|
|
ReorderLevel: model.ReorderLevel,
|
|
|
|
|
UpdatedAt: model.UpdatedAt,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func CreateInventoryRequestToEntity(req *models.CreateInventoryRequest) *entities.Inventory {
|
|
|
|
|
if req == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &entities.Inventory{
|
|
|
|
|
OutletID: req.OutletID,
|
|
|
|
|
ProductID: req.ProductID,
|
|
|
|
|
Quantity: req.Quantity,
|
|
|
|
|
ReorderLevel: req.ReorderLevel,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InventoryEntityToResponse(entity *entities.Inventory) *models.InventoryResponse {
|
|
|
|
|
if entity == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-13 21:02:26 +07:00
|
|
|
productName := ""
|
|
|
|
|
if entity.Product.ID != uuid.Nil {
|
|
|
|
|
productName = entity.Product.Name
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-18 20:10:29 +07:00
|
|
|
return &models.InventoryResponse{
|
|
|
|
|
ID: entity.ID,
|
|
|
|
|
OutletID: entity.OutletID,
|
|
|
|
|
ProductID: entity.ProductID,
|
2025-08-13 21:02:26 +07:00
|
|
|
ProductName: productName,
|
2025-07-18 20:10:29 +07:00
|
|
|
Quantity: entity.Quantity,
|
|
|
|
|
ReorderLevel: entity.ReorderLevel,
|
|
|
|
|
IsLowStock: entity.IsLowStock(),
|
|
|
|
|
UpdatedAt: entity.UpdatedAt,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func UpdateInventoryEntityFromRequest(entity *entities.Inventory, req *models.UpdateInventoryRequest) {
|
|
|
|
|
if entity == nil || req == nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if req.Quantity != nil {
|
|
|
|
|
entity.Quantity = *req.Quantity
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if req.ReorderLevel != nil {
|
|
|
|
|
entity.ReorderLevel = *req.ReorderLevel
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InventoryAdjustmentRequestToModel(req *models.InventoryAdjustmentRequest) *models.InventoryAdjustmentRequest {
|
|
|
|
|
if req == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &models.InventoryAdjustmentRequest{
|
|
|
|
|
Delta: req.Delta,
|
|
|
|
|
Reason: req.Reason,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InventoryEntitiesToModels(entities []*entities.Inventory) []*models.Inventory {
|
|
|
|
|
if entities == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
models := make([]*models.Inventory, len(entities))
|
|
|
|
|
for i, entity := range entities {
|
|
|
|
|
models[i] = InventoryEntityToModel(entity)
|
|
|
|
|
}
|
|
|
|
|
return models
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InventoryEntitiesToResponses(entities []*entities.Inventory) []*models.InventoryResponse {
|
|
|
|
|
if entities == nil {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
responses := make([]*models.InventoryResponse, len(entities))
|
|
|
|
|
for i, entity := range entities {
|
|
|
|
|
responses[i] = InventoryEntityToResponse(entity)
|
|
|
|
|
}
|
|
|
|
|
return responses
|
|
|
|
|
}
|