package grpc import ( "context" "strconv" "git.techease.ru/Smart-search/smart-search-back/pkg/errors" pb "git.techease.ru/Smart-search/smart-search-back/pkg/pb/request" "github.com/google/uuid" "google.golang.org/protobuf/types/known/timestamppb" ) func (h *RequestHandler) CreateTZ(ctx context.Context, req *pb.CreateTZRequest) (*pb.CreateTZResponse, error) { requestID, tzText, err := h.requestService.CreateTZ(ctx, int(req.UserId), req.RequestTxt, req.FileData, req.FileName) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.CreateTZ") } return &pb.CreateTZResponse{ RequestId: requestID.String(), TzText: tzText, }, nil } func (h *RequestHandler) ApproveTZ(ctx context.Context, req *pb.ApproveTZRequest) (*pb.ApproveTZResponse, error) { requestID, err := uuid.Parse(req.RequestId) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.ApproveTZ") } suppliers, err := h.requestService.ApproveTZ(ctx, requestID, req.FinalTz, int(req.UserId)) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.ApproveTZ") } pbSuppliers := make([]*pb.Supplier, 0, len(suppliers)) for _, s := range suppliers { pbSuppliers = append(pbSuppliers, &pb.Supplier{ Id: strconv.Itoa(s.ID), Name: s.Name, Email: s.Email, Phone: s.Phone, Address: s.Address, Url: s.URL, }) } return &pb.ApproveTZResponse{ RequestId: req.RequestId, Suppliers: pbSuppliers, }, nil } func (h *RequestHandler) GetMailingList(ctx context.Context, req *pb.GetMailingListRequest) (*pb.GetMailingListResponse, error) { requests, err := h.requestService.GetMailingList(ctx, int(req.UserId)) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingList") } items := make([]*pb.MailingItem, 0, len(requests)) for _, r := range requests { items = append(items, &pb.MailingItem{ RequestId: r.ID.String(), RequestTxt: r.RequestTxt, FinalTz: r.FinalTZ, MailingStatus: r.MailingStatus, CreatedAt: timestamppb.New(r.CreatedAt), SuppliersFound: 0, }) } return &pb.GetMailingListResponse{ Items: items, }, nil } func (h *RequestHandler) GetMailingListByID(ctx context.Context, req *pb.GetMailingListByIDRequest) (*pb.GetMailingListByIDResponse, error) { requestID, err := uuid.Parse(req.RequestId) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingListByID") } detail, err := h.requestService.GetMailingListByID(ctx, requestID, int(req.UserId)) if err != nil { return nil, errors.ToGRPCError(err, h.logger, "RequestService.GetMailingListByID") } suppliers := make([]*pb.Supplier, 0, len(detail.Suppliers)) for _, s := range detail.Suppliers { suppliers = append(suppliers, &pb.Supplier{ Id: strconv.Itoa(s.CompanyID), Name: s.CompanyName, Email: s.Email, Phone: s.Phone, Url: s.URL, }) } return &pb.GetMailingListByIDResponse{ Detail: &pb.MailingDetail{ RequestId: detail.RequestID.String(), Title: detail.Title, MailText: detail.MailText, Suppliers: suppliers, }, }, nil }