package store_usecase

import (
	"chonho/internal/api-v1/entity"
	"chonho/internal/api-v1/repository/rate_repository"
	"chonho/internal/api-v1/repository/store_repository"
	"chonho/pkg/model"
	"context"
)

type StoreUseCase interface {
	ListStoreEntity(filter store_repository.StoreFilter) ([]entity.Store, error)
	GetStoreEntity(id int64) (*entity.Store, error)
	ListStorePayment(filter store_repository.StoreFilter) ([]entity.StorePaymentInfo, error)
	RateStore(storeId, userid int64, rate *entity.RateStore) error

	CreateStore(user *model.User, request *entity.StoreCreateRequest, ctx context.Context) (*entity.StoreCreateReturn, error)
	UpdateStore(userId, storeId int64, request *entity.StoreCreateRequest, ctx context.Context) error
	SellerListStore(userId int64, ctx context.Context) ([]entity.SellerStore, error)
	SellerStoreDetail(userId, storeId int64, ctx context.Context) (*entity.SellerStore, error)
}

type useCase struct {
	storeRepo store_repository.StoreRepository
	rateRepo  rate_repository.RateRepository
}

func NewStoreUseCase(r store_repository.StoreRepository, rateRepo rate_repository.RateRepository) *useCase {
	return &useCase{
		storeRepo: r,
		rateRepo:  rateRepo,
	}
}
