package mapper

import (
	"encoding/json"
	"jaecoo-be/app/database/entity"
	res "jaecoo-be/app/module/products/response"
	"path/filepath"
)

func ProductsResponseMapper(product *entity.Products, host string) *res.ProductsResponse {
	if product == nil {
		return nil
	}

	var colors []string
	if product.Colors != nil && *product.Colors != "" {
		json.Unmarshal([]byte(*product.Colors), &colors)
	}

	response := &res.ProductsResponse{
		ID:            product.ID,
		Title:         product.Title,
		Variant:       product.Variant,
		Price:         product.Price,
		ThumbnailPath: product.ThumbnailPath,
		Colors:        colors,
		IsActive:      product.IsActive,
		CreatedAt:     product.CreatedAt,
		UpdatedAt:     product.UpdatedAt,
	}

	if product.ThumbnailPath != nil && *product.ThumbnailPath != "" {
		// Extract filename from path
		filename := filepath.Base(*product.ThumbnailPath)
		thumbnailUrl := host + "/products/viewer/" + filename
		response.ThumbnailUrl = &thumbnailUrl
	}

	return response
}

