package adminkindboxreqservice import ( "context" "time" "git.gocasts.ir/ebhomengo/niki/entity" param "git.gocasts.ir/ebhomengo/niki/param/admin/kind_box_req" richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error" ) func (s Service) Add(ctx context.Context, req param.KindBoxReqAddRequest) (param.KindBoxReqAddResponse, error) { const op = "adminkindboxreqservice.Add" if fieldErrors, vErr := s.vld.ValidateAddRequest(ctx, req); vErr != nil { return param.KindBoxReqAddResponse{FieldErrors: fieldErrors}, richerror.New(op).WithErr(vErr) } date, tErr := time.Parse(time.DateTime, req.DeliverReferDate) if tErr != nil { return param.KindBoxReqAddResponse{}, richerror.New(op).WithErr(tErr).WithKind(richerror.KindInvalid) } kindBoxReq, err := s.repo.AddKindBoxReq(ctx, entity.KindBoxReq{ BenefactorID: req.BenefactorID, KindBoxType: req.KindBoxType, DeliverAddressID: req.DeliverAddressID, DeliverReferDate: date, CountRequested: req.CountRequested, Status: entity.KindBoxReqPendingStatus, }) if err != nil { return param.KindBoxReqAddResponse{}, richerror.New(op).WithErr(err).WithKind(richerror.KindUnexpected) } return param.KindBoxReqAddResponse{Data: param.Data{ ID: kindBoxReq.ID, BenefactorID: kindBoxReq.BenefactorID, KindBoxType: kindBoxReq.KindBoxType, CountRequested: kindBoxReq.CountRequested, CountAccepted: kindBoxReq.CountAccepted, Description: kindBoxReq.Description, Status: kindBoxReq.Status, DeliverReferTimeID: kindBoxReq.DeliverReferTimeID, DeliverReferDate: kindBoxReq.DeliverReferDate, DeliverAddressID: kindBoxReq.DeliverAddressID, SenderAgentID: kindBoxReq.SenderAgentID, DeliveredAt: kindBoxReq.DeliveredAt, }}, nil }