niki/service/seeder/add_benefactor.go

66 lines
1.8 KiB
Go

package adminseederservice
import (
"context"
"strconv"
"git.gocasts.ir/ebhomengo/niki/entity"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
"github.com/brianvoe/gofakeit/v7"
)
func (s Service) AddBenefactor(ctx context.Context) (entity.Benefactor, error) {
const op = "adminseederservice.AddBenefactor"
phoneNumber, pErr := s.getPhoneNumber(ctx)
if pErr != nil {
return entity.Benefactor{}, richerror.New(op).WithErr(pErr).WithKind(richerror.KindUnexpected)
}
benefactor, cErr := s.benefactorRepo.CreateBenefactor(ctx, entity.Benefactor{
FirstName: gofakeit.FirstName(),
LastName: gofakeit.LastName(),
PhoneNumber: phoneNumber,
})
if cErr != nil {
return entity.Benefactor{}, richerror.New(op).WithErr(cErr).WithKind(richerror.KindUnexpected)
}
return benefactor, nil
}
func (s Service) getPhoneNumber(ctx context.Context) (string, error) {
minNum := 111111111
maxNum := 999999999
phoneNumber := "09" + strconv.Itoa(gofakeit.Number(minNum, maxNum))
_, _, err := s.benefactorRepo.IsExistBenefactorByPhoneNumber(ctx, phoneNumber)
if err != nil {
return "", err
}
return phoneNumber, nil
}
func (s Service) getAddress(ctx context.Context, benefactorID uint) (entity.Address, error) {
cities, cErr := s.addressRepo.GetAllCities(ctx)
if cErr != nil {
return entity.Address{}, cErr
}
city := cities[gofakeit.Number(1, 470)]
address, aErr := s.addressRepo.CreateBenefactorAddress(ctx, entity.Address{
PostalCode: gofakeit.Zip(),
Address: gofakeit.Address().Address,
Name: gofakeit.Name(),
Lat: gofakeit.Latitude(),
Lon: gofakeit.Longitude(),
CityID: city.ID,
ProvinceID: city.ProvinceID,
BenefactorID: benefactorID,
})
if aErr != nil {
return entity.Address{}, aErr
}
return address, nil
}