From 90894d39fc05ab5e57b3241fa0ec6cf5ac796b33 Mon Sep 17 00:00:00 2001 From: naneey Date: Tue, 26 Sep 2023 13:35:35 +0545 Subject: [PATCH] chore:milestone completion in submit proposal --- .../icon/cps/score/cpscore/CPSCore.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java b/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java index 28e6d86a..ffd194db 100644 --- a/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java +++ b/CPSCore/src/main/java/community/icon/cps/score/cpscore/CPSCore.java @@ -806,16 +806,24 @@ public void submitProgressReport(ProgressReportAttributes progressReport) { Context.require(proposalKeyExists(ipfsHash), TAG + ": Invalid proposal key"); addNewProgressReportKey(ipfsHash, reportHash); String reportHashPrefix = progressReportPrefix(reportHash); + if(progressReport.milestoneCompleted == null){ + progressReport.milestoneCompleted = new int[]{}; + } addDataToProgressReportDB(progressReport, reportHashPrefix); + int proposalMilestoneCount = ProposalDataDb.getMilestoneCount(ipfsHashPrefix); + if (proposalMilestoneCount !=0 ) { + int[] milestones = progressReport.milestoneCompleted; - int[] milestones = progressReport.milestoneCompleted; +// TODO: check that submitted milestones are in proposal db + Context.require(milestones.length <= proposalMilestoneCount, + TAG + " Submitted milestone is greater than recorded on proposal."); - for (int milestone : milestones) { + for (int milestone : milestones) { - int milestoneStatus = getMileststoneStatusOf(ipfsHash,milestone); - if (milestoneStatus == MILESTONE_REPORT_COMPLETED || milestoneStatus == MILESTONE_REPORT_SUBMITTED) { - Context.revert("Cannot submit progress report of completed milestone"); // TODO: better error message - } + int milestoneStatus = getMileststoneStatusOf(ipfsHash, milestone); + if (milestoneStatus == MILESTONE_REPORT_COMPLETED || milestoneStatus == MILESTONE_REPORT_SUBMITTED) { + Context.revert(TAG + " Milestone already completed/submitted " + milestoneStatus); + } MilestonesAttributes milestonesAttributes = new MilestonesAttributes(); milestonesAttributes.reportHash = reportHash;