81 lines
2.4 KiB
Go
81 lines
2.4 KiB
Go
package services
|
|
|
|
import (
|
|
"github.com/pahmiudahgede/senggoldong/dto"
|
|
"github.com/pahmiudahgede/senggoldong/internal/repositories"
|
|
"github.com/pahmiudahgede/senggoldong/utils"
|
|
)
|
|
|
|
func GetProducts(limit, page int) ([]dto.ProductResponseDTO, error) {
|
|
offset := (page - 1) * limit
|
|
|
|
products, err := repositories.GetAllProducts(limit, offset)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var productResponses []dto.ProductResponseDTO
|
|
for _, product := range products {
|
|
var images []dto.ProductImageDTO
|
|
for _, img := range product.ProductImages {
|
|
images = append(images, dto.ProductImageDTO{ImageURL: img.ImageURL})
|
|
}
|
|
|
|
trashDetail := dto.TrashDetailResponseDTO{
|
|
ID: product.TrashDetail.ID,
|
|
Description: product.TrashDetail.Description,
|
|
Price: product.TrashDetail.Price,
|
|
}
|
|
|
|
productResponses = append(productResponses, dto.ProductResponseDTO{
|
|
ID: product.ID,
|
|
UserID: product.UserID,
|
|
ProductTitle: product.ProductTitle,
|
|
ProductImages: images,
|
|
TrashDetail: trashDetail,
|
|
SalePrice: product.SalePrice,
|
|
Quantity: product.Quantity,
|
|
ProductDescribe: product.ProductDescribe,
|
|
Sold: product.Sold,
|
|
CreatedAt: utils.FormatDateToIndonesianFormat(product.CreatedAt),
|
|
UpdatedAt: utils.FormatDateToIndonesianFormat(product.UpdatedAt),
|
|
})
|
|
}
|
|
|
|
return productResponses, nil
|
|
}
|
|
|
|
func GetProductByID(productID string) (dto.ProductResponseDTO, error) {
|
|
product, err := repositories.GetProductByID(productID)
|
|
if err != nil {
|
|
return dto.ProductResponseDTO{}, err
|
|
}
|
|
|
|
var images []dto.ProductImageDTO
|
|
for _, img := range product.ProductImages {
|
|
images = append(images, dto.ProductImageDTO{ImageURL: img.ImageURL})
|
|
}
|
|
|
|
trashDetail := dto.TrashDetailResponseDTO{
|
|
ID: product.TrashDetail.ID,
|
|
Description: product.TrashDetail.Description,
|
|
Price: product.TrashDetail.Price,
|
|
}
|
|
|
|
productResponse := dto.ProductResponseDTO{
|
|
ID: product.ID,
|
|
UserID: product.UserID,
|
|
ProductTitle: product.ProductTitle,
|
|
ProductImages: images,
|
|
TrashDetail: trashDetail,
|
|
SalePrice: product.SalePrice,
|
|
Quantity: product.Quantity,
|
|
ProductDescribe: product.ProductDescribe,
|
|
Sold: product.Sold,
|
|
CreatedAt: utils.FormatDateToIndonesianFormat(product.CreatedAt),
|
|
UpdatedAt: utils.FormatDateToIndonesianFormat(product.UpdatedAt),
|
|
}
|
|
|
|
return productResponse, nil
|
|
}
|