package benefactoraddressservice

import (
	"context"

	"git.gocasts.ir/ebhomengo/niki/entity"
	validator "git.gocasts.ir/ebhomengo/niki/validator/benefactor/address"
)

type Repository interface {
	CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error)
	GetAddressByID(ctx context.Context, id uint) (entity.Address, error)
	GetAllProvinces(ctx context.Context) ([]entity.Province, error)
	GetAllCities(ctx context.Context) ([]entity.City, error)
	UpdateAddress(ctx context.Context, address entity.Address) error
	GetAddress(ctx context.Context, addressID uint, benefactorID uint) (entity.Address, error)
	GetAddresses(ctx context.Context, benefactorID uint) ([]entity.Address, error)
	DeleteBenefactorAddress(ctx context.Context, addressID uint, benefactorID uint) error
}

type Service struct {
	repo Repository
	vld  validator.Validator
}

func New(repo Repository, vld validator.Validator) Service {
	return Service{repo: repo, vld: vld}
}
