niki/service/seeder/add_kind_box.go

41 lines
1.3 KiB
Go

package adminseederservice
import (
"context"
"git.gocasts.ir/ebhomengo/niki/entity"
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
"github.com/brianvoe/gofakeit/v7"
)
func (s Service) AddKindBox(ctx context.Context, agentId uint, status entity.KindBoxStatus) (entity.KindBox, error) {
const op = "adminseederservice.AddKindBox"
kindBoxReq, cErr := s.AddKindBoxReq(ctx, entity.KindBoxReqAcceptedStatus)
if cErr != nil {
return entity.KindBox{}, richerror.New(op).WithErr(cErr).WithKind(richerror.KindUnexpected)
}
address, aErr := s.getAddress(ctx, kindBoxReq.BenefactorID)
if aErr != nil {
return entity.KindBox{}, richerror.New(op).WithErr(aErr).WithKind(richerror.KindUnexpected)
}
kindBox, kErr := s.kindBoxRepo.AddKindBox(ctx, entity.KindBox{
KindBoxReqID: kindBoxReq.ID,
BenefactorID: kindBoxReq.BenefactorID,
KindBoxType: new(entity.KindBoxType).GetRandom(),
Status: status,
DeliverReferTimeID: uint(gofakeit.IntRange(1, 7)),
DeliverReferDate: gofakeit.Date(),
DeliverAddressID: address.ID,
SenderAgentID: agentId,
DeliveredAt: gofakeit.Date(),
})
if kErr != nil {
return entity.KindBox{}, richerror.New(op).WithErr(kErr).WithKind(richerror.KindUnexpected)
}
return kindBox, nil
}