package store_usecase

import (
	_const "chonho/const"
	"chonho/internal/api-v1/entity"
	"chonho/internal/api-v1/repository/store_repository"
	_error "chonho/pkg/c_error"
	"chonho/pkg/model"
)

func (uc *useCase) ListStoreEntity(filter store_repository.StoreFilter) ([]entity.Store, error) {
	result, err := uc.storeRepo.FindStoreEntity(filter)
	return result, err
}

func (uc *useCase) GetStoreEntity(id int64) (*entity.Store, error) {
	stores, err := uc.storeRepo.FindStoreEntity(store_repository.StoreFilter{
		StoreId: id,
	})
	if len(stores) == 0 {
		return nil, _error.New(_const.StoreNotFound, "Store not found")
	}
	return &stores[0], err
}

func (uc *useCase) ListStorePayment(filter store_repository.StoreFilter) ([]entity.StorePaymentInfo, error) {
	return uc.storeRepo.FindStorePayment(filter)
}

func (uc *useCase) RateStore(storeId, userid int64, rate *entity.RateStore) error {
	storeRate := model.Rate{
		StoreId:   storeId,
		CreatedBy: userid,
		Rate:      rate.Rate,
		Comment:   rate.Comment,
	}
	if err := uc.rateRepo.Save(&storeRate); err != nil {
		return _error.New(_const.InternalServerErr, err.Error())
	}
	if err := uc.storeRepo.UpdateStoreRate(storeId); err != nil {
		return _error.New(_const.InternalServerErr, err.Error())
	}
	return nil
}
