Refactor Tender Approval Logic and Update Statistics Structure
- Modified the Reject method in the TenderApproval entity to reset the SubmissionMode field upon rejection, ensuring proper state management. - Simplified the TenderApprovalStatsResponse and CompanyTenderApprovalStatsResponse structures by removing unnecessary fields related to submission modes, streamlining the data model for tender approval statistics. - Updated the GetTenderApprovalStats and GetCompanyTenderApprovalStats methods in the repository to reflect the changes in the statistics structure, enhancing clarity and maintainability. - These adjustments improve the overall functionality and data handling of the tender management system.
This commit is contained in:
@@ -478,27 +478,13 @@ func (r *tenderApprovalRepository) GetTenderApprovalStats(ctx context.Context) (
|
||||
approvedTenders, _ := r.CountByStatus(ctx, ApprovalStatusApproved)
|
||||
rejectedTenders, _ := r.CountByStatus(ctx, ApprovalStatusRejected)
|
||||
|
||||
// For this implementation, we'll return basic stats
|
||||
// In a real implementation, you'd use MongoDB aggregation pipelines
|
||||
stats := &TenderApprovalStatsResponse{
|
||||
TotalApprovals: totalApprovals,
|
||||
ApprovedTenders: approvedTenders,
|
||||
RejectedTenders: rejectedTenders,
|
||||
ApprovalsByStatus: make(map[string]int64),
|
||||
ApprovalsBySubmission: make(map[string]int64),
|
||||
LastUpdated: time.Now().Unix(),
|
||||
TotalApprovals: totalApprovals,
|
||||
ApprovedTenders: approvedTenders,
|
||||
RejectedTenders: rejectedTenders,
|
||||
LastUpdated: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// Add status breakdown
|
||||
stats.ApprovalsByStatus["approved"] = approvedTenders
|
||||
stats.ApprovalsByStatus["rejected"] = rejectedTenders
|
||||
|
||||
// Add submission mode breakdown
|
||||
selfApplyCount, _ := r.CountBySubmissionMode(ctx, SubmissionModeSelfApply)
|
||||
partnershipCount, _ := r.CountBySubmissionMode(ctx, SubmissionModePartnership)
|
||||
stats.ApprovalsBySubmission["self-apply"] = selfApplyCount
|
||||
stats.ApprovalsBySubmission["partnership"] = partnershipCount
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
@@ -515,32 +501,22 @@ func (r *tenderApprovalRepository) GetCompanyTenderApprovalStats(ctx context.Con
|
||||
rejectedTenders, _ := r.ormRepo.Count(ctx, rejectedFilter)
|
||||
|
||||
// Count by submission mode for this company
|
||||
selfApplyFilter := bson.M{"company_id": companyID, "submission_mode": string(SubmissionModeSelfApply)}
|
||||
selfApplyFilter := bson.M{"company_id": companyID, "status": string(ApprovalStatusApproved), "submission_mode": string(SubmissionModeSelfApply)}
|
||||
selfApplyCount, _ := r.ormRepo.Count(ctx, selfApplyFilter)
|
||||
|
||||
partnershipFilter := bson.M{"company_id": companyID, "submission_mode": string(SubmissionModePartnership)}
|
||||
partnershipFilter := bson.M{"company_id": companyID, "status": string(ApprovalStatusApproved), "submission_mode": string(SubmissionModePartnership)}
|
||||
partnershipCount, _ := r.ormRepo.Count(ctx, partnershipFilter)
|
||||
|
||||
stats := &CompanyTenderApprovalStatsResponse{
|
||||
CompanyID: companyID,
|
||||
TotalApprovals: totalApprovals,
|
||||
ApprovedTenders: approvedTenders,
|
||||
RejectedTenders: rejectedTenders,
|
||||
SelfApplyCount: selfApplyCount,
|
||||
PartnershipCount: partnershipCount,
|
||||
ApprovalsByStatus: make(map[string]int64),
|
||||
ApprovalsBySubmission: make(map[string]int64),
|
||||
LastUpdated: time.Now().Unix(),
|
||||
CompanyID: companyID,
|
||||
TotalApprovals: totalApprovals,
|
||||
ApprovedTenders: approvedTenders,
|
||||
RejectedTenders: rejectedTenders,
|
||||
SelfApplyCount: selfApplyCount,
|
||||
PartnershipCount: partnershipCount,
|
||||
LastUpdated: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// Add status breakdown
|
||||
stats.ApprovalsByStatus["approved"] = approvedTenders
|
||||
stats.ApprovalsByStatus["rejected"] = rejectedTenders
|
||||
|
||||
// Add submission mode breakdown
|
||||
stats.ApprovalsBySubmission["self-apply"] = selfApplyCount
|
||||
stats.ApprovalsBySubmission["partnership"] = partnershipCount
|
||||
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user