package services

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

type StoreProductService struct {
	repository *repositories.StoreProductRepository
}

func NewStoreProductService() *StoreProductService {
	return &StoreProductService{
		repository: repositories.NewStoreProductRepository(),
	}
}

func (s *StoreProductService) GetProducts(req storedto.ProductListRequest) (*storedto.ProductListResponse, error) {

	response, err := s.repository.GetProducts(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}

func (s *StoreProductService) GetProductDetail(req storedto.ProductDetailRequest) (*storedto.ProductDetailResponse, error) {

	response, err := s.repository.GetProductByID(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}

func (s *StoreProductService) SearchProducts(req storedto.SearchProductRequest) (*storedto.ProductListResponse, error) {

	response, err := s.repository.SearchProducts(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}

func (s *StoreProductService) GetSimilarProducts(req storedto.SimilarProductRequest) (*storedto.ProductListResponse, error) {

	response, err := s.repository.GetSimilarProducts(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}

func (s *StoreProductService) GetProductReviews(req storedto.ProductReviewRequest) (*storedto.ProductReviewResponse, error) {

	response, err := s.repository.GetProductReviews(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}

func (s *StoreProductService) GetProductFAQs(req storedto.ProductFAQRequest) (*storedto.ProductFAQResponse, error) {

	response, err := s.repository.GetProductFAQs(req)

	if err != nil {
		return nil, err
	}

	return response, nil
}