package adminseederservice

import (
	"context"

	"git.gocasts.ir/ebhomengo/niki/entity"
)

type BenefactorRepo interface {
	CreateBenefactor(ctx context.Context, benefactor entity.Benefactor) (entity.Benefactor, error)
	IsExistBenefactorByPhoneNumber(ctx context.Context, phoneNumber string) (bool, entity.Benefactor, error)
}

type KindBoxRepo interface {
	AddKindBox(ctx context.Context, kindBox entity.KindBox) (entity.KindBox, error)
	AssignReceiverAgent(ctx context.Context, kindBox entity.KindBox) error
}

type KindBoxReqRepo interface {
	AddKindBoxReq(ctx context.Context, kindBoxReq entity.KindBoxReq) (entity.KindBoxReq, error)
	AssignSenderAgentToKindBoxReq(ctx context.Context, kindBoxReqID, senderAgentID uint) error
}

type AddressRepo interface {
	GetAllCities(ctx context.Context) ([]entity.City, error)
	CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error)
}

type Service struct {
	benefactorRepo BenefactorRepo
	kindBoxRepo    KindBoxRepo
	kindBoxReqRepo KindBoxReqRepo
	addressRepo    AddressRepo
}

func New(benefactorRepo BenefactorRepo, kindBoxRepo KindBoxRepo, kindBoxReqRepo KindBoxReqRepo, addressRepo AddressRepo) Service {
	return Service{
		benefactorRepo: benefactorRepo,
		kindBoxRepo:    kindBoxRepo,
		kindBoxReqRepo: kindBoxReqRepo,
		addressRepo:    addressRepo,
	}
}
