get liked tenders error
This commit is contained in:
+71
-101
@@ -16,7 +16,7 @@ type Service interface {
|
|||||||
GetByTenderID(ctx context.Context, tenderID, companyID string) (*FeedbackResponse, error)
|
GetByTenderID(ctx context.Context, tenderID, companyID string) (*FeedbackResponse, error)
|
||||||
Delete(ctx context.Context, id string) error
|
Delete(ctx context.Context, id string) error
|
||||||
CompanyStats(ctx context.Context, companyID string) (*StatsResponse, error)
|
CompanyStats(ctx context.Context, companyID string) (*StatsResponse, error)
|
||||||
getDetails(ctx context.Context, tenderID, companyID string) (*tenderResponse, *companyResponse, error)
|
getDetails(ctx context.Context, tenderID, companyID string) (*tenderResponse, *companyResponse)
|
||||||
}
|
}
|
||||||
|
|
||||||
// feedbackService implements FeedbackService interface
|
// feedbackService implements FeedbackService interface
|
||||||
@@ -58,14 +58,7 @@ func (s *feedbackService) Toggle(ctx context.Context, req ToggleFeedbackForm, cu
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tender, company, err := s.getDetails(ctx, req.Tender, *companyID)
|
tender, company := s.getDetails(ctx, req.Tender, *companyID)
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get details", map[string]interface{}{
|
|
||||||
"tender_id": req.Tender,
|
|
||||||
"company_id": *companyID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return feedback.ToResponse(tender, company), nil
|
return feedback.ToResponse(tender, company), nil
|
||||||
}
|
}
|
||||||
@@ -88,14 +81,7 @@ func (s *feedbackService) Toggle(ctx context.Context, req ToggleFeedbackForm, cu
|
|||||||
existing.FeedbackType = "undislike"
|
existing.FeedbackType = "undislike"
|
||||||
}
|
}
|
||||||
|
|
||||||
tender, company, err := s.getDetails(ctx, req.Tender, *companyID)
|
tender, company := s.getDetails(ctx, req.Tender, *companyID)
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get details", map[string]interface{}{
|
|
||||||
"tender_id": req.Tender,
|
|
||||||
"company_id": *companyID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return existing.ToResponse(tender, company), nil
|
return existing.ToResponse(tender, company), nil
|
||||||
}
|
}
|
||||||
@@ -117,14 +103,7 @@ func (s *feedbackService) Toggle(ctx context.Context, req ToggleFeedbackForm, cu
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tender, company, err := s.getDetails(ctx, req.Tender, *companyID)
|
tender, company := s.getDetails(ctx, req.Tender, *companyID)
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get details", map[string]interface{}{
|
|
||||||
"tender_id": req.Tender,
|
|
||||||
"company_id": *companyID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return existing.ToResponse(tender, company), nil
|
return existing.ToResponse(tender, company), nil
|
||||||
}
|
}
|
||||||
@@ -139,14 +118,7 @@ func (s *feedbackService) Get(ctx context.Context, id string) (*FeedbackResponse
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tender, company, err := s.getDetails(ctx, feedback.TenderID, *feedback.CompanyID)
|
tender, company := s.getDetails(ctx, feedback.TenderID, feedbackCompanyID(*feedback))
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get details", map[string]interface{}{
|
|
||||||
"tender_id": feedback.TenderID,
|
|
||||||
"company_id": *feedback.CompanyID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return feedback.ToResponse(tender, company), nil
|
return feedback.ToResponse(tender, company), nil
|
||||||
}
|
}
|
||||||
@@ -167,7 +139,7 @@ func (s *feedbackService) Search(ctx context.Context, criteria SearchForm, pagin
|
|||||||
|
|
||||||
result := make([]*FeedbackResponse, len(page.Items))
|
result := make([]*FeedbackResponse, len(page.Items))
|
||||||
for i, feedback := range page.Items {
|
for i, feedback := range page.Items {
|
||||||
tender, company, _ := s.getDetails(ctx, feedback.TenderID, *feedback.CompanyID)
|
tender, company := s.getDetails(ctx, feedback.TenderID, feedbackCompanyID(feedback))
|
||||||
result[i] = feedback.ToResponse(tender, company)
|
result[i] = feedback.ToResponse(tender, company)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,86 +163,84 @@ func (s *feedbackService) GetByTenderID(ctx context.Context, tenderID, companyID
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
tender, err := s.tenderService.GetByID(ctx, feedback.TenderID, "")
|
tender, company := s.getDetails(ctx, feedback.TenderID, feedbackCompanyID(*feedback))
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get tender", map[string]interface{}{
|
|
||||||
"tender_id": feedback.TenderID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
company, err := s.companyService.GetByID(ctx, *feedback.CompanyID)
|
return feedback.ToResponse(tender, company), nil
|
||||||
if err != nil {
|
|
||||||
s.logger.Error("Failed to get company", map[string]interface{}{
|
|
||||||
"company_id": feedback.CompanyID,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return feedback.ToResponse(
|
|
||||||
&tenderResponse{
|
|
||||||
ID: tender.ID,
|
|
||||||
NoticePublicationID: tender.NoticePublicationID,
|
|
||||||
PublicationDate: tender.PublicationDate,
|
|
||||||
Title: tender.Title,
|
|
||||||
Description: tender.Description,
|
|
||||||
ProcurementTypeCode: tender.ProcurementTypeCode,
|
|
||||||
ProcedureCode: tender.ProcedureCode,
|
|
||||||
EstimatedValue: tender.EstimatedValue,
|
|
||||||
Currency: tender.Currency,
|
|
||||||
Duration: tender.Duration,
|
|
||||||
DurationUnit: tender.DurationUnit,
|
|
||||||
TenderDeadline: tender.TenderDeadline,
|
|
||||||
SubmissionDeadline: tender.SubmissionDeadline,
|
|
||||||
CountryCode: tender.CountryCode,
|
|
||||||
BuyerOrganization: &organizationResponse{Name: tender.BuyerOrganization.Name},
|
|
||||||
Status: string(tender.Status),
|
|
||||||
},
|
|
||||||
&companyResponse{
|
|
||||||
ID: company.ID,
|
|
||||||
Name: company.Name,
|
|
||||||
},
|
|
||||||
), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *feedbackService) getDetails(ctx context.Context, tenderID, companyID string) (*tenderResponse, *companyResponse, error) {
|
func feedbackCompanyID(f Feedback) string {
|
||||||
|
if f.CompanyID == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return *f.CompanyID
|
||||||
|
}
|
||||||
|
|
||||||
|
func tenderToFeedbackResponse(t *tender.TenderResponse) *tenderResponse {
|
||||||
|
if t == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var buyer *organizationResponse
|
||||||
|
if t.BuyerOrganization != nil {
|
||||||
|
buyer = &organizationResponse{Name: t.BuyerOrganization.Name}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &tenderResponse{
|
||||||
|
ID: t.ID,
|
||||||
|
NoticePublicationID: t.NoticePublicationID,
|
||||||
|
PublicationDate: t.PublicationDate,
|
||||||
|
Title: t.Title,
|
||||||
|
Description: t.Description,
|
||||||
|
ProcurementTypeCode: t.ProcurementTypeCode,
|
||||||
|
ProcedureCode: t.ProcedureCode,
|
||||||
|
EstimatedValue: t.EstimatedValue,
|
||||||
|
Currency: t.Currency,
|
||||||
|
Duration: t.Duration,
|
||||||
|
DurationUnit: t.DurationUnit,
|
||||||
|
TenderDeadline: t.TenderDeadline,
|
||||||
|
SubmissionDeadline: t.SubmissionDeadline,
|
||||||
|
CountryCode: t.CountryCode,
|
||||||
|
BuyerOrganization: buyer,
|
||||||
|
Status: string(t.Status),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func companyToFeedbackResponse(c *company.CompanyResponse) *companyResponse {
|
||||||
|
if c == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &companyResponse{
|
||||||
|
ID: c.ID,
|
||||||
|
Name: c.Name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *feedbackService) getDetails(ctx context.Context, tenderID, companyID string) (*tenderResponse, *companyResponse) {
|
||||||
|
var tenderResp *tenderResponse
|
||||||
tender, err := s.tenderService.GetByID(ctx, tenderID, "")
|
tender, err := s.tenderService.GetByID(ctx, tenderID, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Error("Failed to get tender", map[string]interface{}{
|
s.logger.Error("Failed to get tender", map[string]interface{}{
|
||||||
"tender_id": tenderID,
|
"tender_id": tenderID,
|
||||||
"error": err.Error(),
|
"error": err.Error(),
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
tenderResp = tenderToFeedbackResponse(tender)
|
||||||
}
|
}
|
||||||
|
|
||||||
company, err := s.companyService.GetByID(ctx, companyID)
|
var companyResp *companyResponse
|
||||||
if err != nil {
|
if companyID != "" {
|
||||||
s.logger.Error("Failed to get company", map[string]interface{}{
|
company, err := s.companyService.GetByID(ctx, companyID)
|
||||||
"company_id": companyID,
|
if err != nil {
|
||||||
"error": err.Error(),
|
s.logger.Error("Failed to get company", map[string]interface{}{
|
||||||
})
|
"company_id": companyID,
|
||||||
|
"error": err.Error(),
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
companyResp = companyToFeedbackResponse(company)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return &tenderResponse{
|
return tenderResp, companyResp
|
||||||
ID: tender.ID,
|
|
||||||
NoticePublicationID: tender.NoticePublicationID,
|
|
||||||
PublicationDate: tender.PublicationDate,
|
|
||||||
Title: tender.Title,
|
|
||||||
Description: tender.Description,
|
|
||||||
ProcurementTypeCode: tender.ProcurementTypeCode,
|
|
||||||
ProcedureCode: tender.ProcedureCode,
|
|
||||||
EstimatedValue: tender.EstimatedValue,
|
|
||||||
Currency: tender.Currency,
|
|
||||||
Duration: tender.Duration,
|
|
||||||
DurationUnit: tender.DurationUnit,
|
|
||||||
TenderDeadline: tender.TenderDeadline,
|
|
||||||
SubmissionDeadline: tender.SubmissionDeadline,
|
|
||||||
CountryCode: tender.CountryCode,
|
|
||||||
BuyerOrganization: &organizationResponse{Name: tender.BuyerOrganization.Name},
|
|
||||||
Status: string(tender.Status),
|
|
||||||
}, &companyResponse{
|
|
||||||
ID: company.ID,
|
|
||||||
Name: company.Name,
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *feedbackService) CompanyStats(ctx context.Context, companyID string) (*StatsResponse, error) {
|
func (s *feedbackService) CompanyStats(ctx context.Context, companyID string) (*StatsResponse, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user