115 lines
2.0 KiB
Go
115 lines
2.0 KiB
Go
package entity
|
|
|
|
import (
|
|
"furtuna-be/internal/constants/product"
|
|
"time"
|
|
)
|
|
|
|
type Product struct {
|
|
ID int64
|
|
Name string
|
|
Type product.ProductType
|
|
Price float64
|
|
Status product.ProductStatus
|
|
Description string
|
|
Image string
|
|
BranchID int64
|
|
StockQty int64
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
DeletedAt *time.Time
|
|
CreatedBy int64
|
|
UpdatedBy int64
|
|
}
|
|
|
|
type ProductSearch struct {
|
|
Search string
|
|
Name string
|
|
Type product.ProductType
|
|
BranchID int64
|
|
Available product.ProductStock
|
|
Limit int
|
|
Offset int
|
|
}
|
|
|
|
type ProductList []*ProductDB
|
|
|
|
type ProductDB struct {
|
|
Product
|
|
}
|
|
|
|
func (b *Product) ToProductDB() *ProductDB {
|
|
return &ProductDB{
|
|
Product: *b,
|
|
}
|
|
}
|
|
|
|
func (ProductDB) TableName() string {
|
|
return "products"
|
|
}
|
|
|
|
func (e *ProductDB) ToProduct() *Product {
|
|
return &Product{
|
|
ID: e.ID,
|
|
Name: e.Name,
|
|
Type: e.Type,
|
|
Price: e.Price,
|
|
Status: e.Status,
|
|
Description: e.Description,
|
|
Image: e.Image,
|
|
BranchID: e.BranchID,
|
|
StockQty: e.StockQty,
|
|
CreatedAt: e.CreatedAt,
|
|
UpdatedAt: e.UpdatedAt,
|
|
DeletedAt: e.DeletedAt,
|
|
CreatedBy: e.CreatedBy,
|
|
UpdatedBy: e.UpdatedBy,
|
|
}
|
|
}
|
|
|
|
func (b *ProductList) ToProductList() []*Product {
|
|
var Products []*Product
|
|
for _, product := range *b {
|
|
Products = append(Products, product.ToProduct())
|
|
}
|
|
return Products
|
|
}
|
|
|
|
func (o *ProductDB) ToUpdatedProduct(updatedby int64, req Product) {
|
|
o.UpdatedBy = updatedby
|
|
|
|
if req.Name != "" {
|
|
o.Name = req.Name
|
|
}
|
|
|
|
if req.Type != "" {
|
|
o.Type = req.Type
|
|
}
|
|
|
|
if req.Price > 0 {
|
|
o.Price = req.Price
|
|
}
|
|
|
|
if req.Status != "" {
|
|
o.Status = req.Status
|
|
}
|
|
|
|
if req.Description != "" {
|
|
o.Description = req.Description
|
|
}
|
|
|
|
if req.Image != "" {
|
|
o.Image = req.Image
|
|
}
|
|
|
|
if req.StockQty > 0 {
|
|
o.StockQty = req.StockQty
|
|
}
|
|
}
|
|
|
|
func (o *ProductDB) SetDeleted(updatedby int64) {
|
|
currentTime := time.Now()
|
|
o.DeletedAt = ¤tTime
|
|
o.UpdatedBy = updatedby
|
|
}
|