2023-10-27 22:12:56 +00:00
|
|
|
package entity
|
|
|
|
|
|
|
|
import (
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
// use to display a product
|
|
|
|
type ProductDisplay struct {
|
2023-11-01 16:42:26 +00:00
|
|
|
ID int `json:"id"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
Description *string `json:"description"`
|
|
|
|
Summary *string `json:"summary"`
|
|
|
|
Price float64 `json:"price"`
|
|
|
|
OriginalPrice float64 `json:"original_price"`
|
|
|
|
Quantity int `json:"quantity"`
|
|
|
|
Status bool `json:"status"`
|
|
|
|
UserID int `json:"user_id"`
|
|
|
|
ProductCategoryID int `json:"product_category_id"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
2023-10-27 22:12:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// use to create or update a product
|
|
|
|
type ProductCreateUpdate struct {
|
|
|
|
ProductDisplay
|
2023-11-01 16:42:26 +00:00
|
|
|
BusinessID int `json:"business_id"`
|
2023-10-27 22:12:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Func that will check non empty field on ProductDisplay and update product
|
|
|
|
func ValidateUpdate(product *ProductCreateUpdate, p *ProductDisplay) *ProductCreateUpdate {
|
|
|
|
if product.Price > p.OriginalPrice {
|
|
|
|
product.Price = p.Price
|
|
|
|
product.OriginalPrice = p.OriginalPrice
|
|
|
|
}
|
|
|
|
|
|
|
|
if product.Quantity < 0 {
|
|
|
|
product.Quantity = 0
|
|
|
|
}
|
|
|
|
|
|
|
|
product.ID = p.ID
|
|
|
|
product.Name = p.Name
|
|
|
|
product.Description = p.Description
|
|
|
|
product.Price = p.Price
|
|
|
|
product.OriginalPrice = p.OriginalPrice
|
|
|
|
product.Quantity = p.Quantity
|
|
|
|
product.Status = p.Status
|
|
|
|
product.CreatedAt = p.CreatedAt
|
|
|
|
product.UpdatedAt = p.UpdatedAt
|
|
|
|
|
|
|
|
return product
|
|
|
|
}
|
|
|
|
|
|
|
|
func ProductDisplayFormatter(product *ProductCreateUpdate) (p *ProductDisplay) {
|
|
|
|
p = &ProductDisplay{
|
|
|
|
ID: product.ID,
|
|
|
|
Name: product.Name,
|
|
|
|
Description: product.Description,
|
|
|
|
Price: product.Price,
|
|
|
|
OriginalPrice: product.OriginalPrice,
|
|
|
|
Quantity: product.Quantity,
|
|
|
|
Status: product.Status,
|
|
|
|
CreatedAt: product.CreatedAt,
|
|
|
|
UpdatedAt: product.UpdatedAt,
|
|
|
|
}
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|