package services

import (
	storedto "astrology-api/dto/store"
	"astrology-api/repositories"
)

type StoreService struct {
	repository *repositories.StoreRepository
}

func NewStoreService() *StoreService {
	return &StoreService{
		repository: repositories.NewStoreRepository(),
	}
}

func (s *StoreService) GetStoreHome(req storedto.HomeRequest) (*storedto.HomeResponse, error) {

	banners, err := s.repository.GetHomeBanners()
	if err != nil {
		return nil, err
	}

	categories, err := s.repository.GetProductCategories()
	if err != nil {
		return nil, err
	}

	trending, err := s.repository.GetTrendingProducts()
	if err != nil {
		return nil, err
	}

	topSelling, err := s.repository.GetTopSellingProducts()
	if err != nil {
		return nil, err
	}

	newLaunch, err := s.repository.GetNewLaunchProducts()
	if err != nil {
		return nil, err
	}

	statistics, err := s.repository.GetStoreStatistics()
	if err != nil {
		return nil, err
	}

	response := &storedto.HomeResponse{
		Status:            200,
		Banners:           banners,
		Statistics:        statistics,
		ProductCategories: categories,
		TrendingProducts:  trending,
		TopSelling:        topSelling,
		NewLaunch:         newLaunch,
	}

	return response, nil
}