package skeleton

import (
	"context"
	SkelEntity "go-skeleton/internal/entity/skeleton"
	"go-skeleton/pkg/errors"
)

// Data ...
// Masukkan function dari package data ke dalam interface ini
type Data interface {
	GetItemPromo(ctx context.Context) ([]SkelEntity.ItemPromo, error)
	GetAllBuyingFocus(ctx context.Context) ([]SkelEntity.Buyingfocus, error)
}

// Service ...
// Tambahkan variable sesuai banyak data layer yang dibutuhkan
type Service struct {
	data Data
}

// New ...
// Tambahkan parameter sesuai banyak data layer yang dibutuhkan
func New(data Data) Service {
	// Assign variable dari parameter ke object
	return Service{
		data: data,
	}
}

//GetAllBuyingFocus ...
func (s Service) GetAllBuyingFocus(ctx context.Context) ([]SkelEntity.Buyingfocus, error) {
	// Panggil method GetAllUsers di data layer user
	skeleton, err := s.data.GetAllBuyingFocus(ctx)
	// Error handling
	if err != nil {
		return skeleton, errors.Wrap(err, "[SERVICE][GetAllBuyingFocus]")
	}
	// Return users array
	return skeleton, err
}

// GetItemPromo ..
func (s Service) GetItemPromo(ctx context.Context) ([]SkelEntity.ItemPromo, error) {
	// Panggil method GetItemPromo di data layer user
	skeleton, err := s.data.GetItemPromo(ctx)
	// Error handling
	if err != nil {
		return skeleton, errors.Wrap(err, "[SERVICE][GetItemPromo]")
	}
	// Return users array
	return skeleton, err
}
