private Hash ProposedToUpdateProjectWithBudgetPlans(ProposeProjectWithBudgetsInput input,
                                                            ProjectType projectType)
        {
            var projectInfo = State.Projects[input.ProjectId];

            if (projectInfo == null)
            {
                throw new AssertionException("Project not found.");
            }

            Assert(projectInfo.Status == ProjectStatus.Proposed, "Incorrect status.");
            Assert(projectInfo.ProjectType == projectType, "Incorrect project type.");
            foreach (var budgetPlan in input.BudgetPlans)
            {
                if (projectType == ProjectType.Bounty)
                {
                    budgetPlan.ReceiverAddress = null;
                }
                else
                {
                    Assert(budgetPlan.ReceiverAddress != null, "Receiver address cannot be null for a grant project.");
                }
            }

            var proposalId = CreateProposalToParliament(
                projectType == ProjectType.Grant ? nameof(UpdateGrantProject) : nameof(UpdateBountyProject),
                new ProjectInfo
            {
                // ReSharper disable once PossibleNullReferenceException
                PullRequestUrl = projectInfo.PullRequestUrl,
                CommitId       = projectInfo.CommitId,
                Status         = ProjectStatus.Approved,
                BudgetPlans    = { input.BudgetPlans },
                IsDevelopersAuditionRequired = projectInfo.IsDevelopersAuditionRequired
            }.ToByteString());

            return(proposalId);
        }
Ejemplo n.º 2
0
 public override Hash ProposeIssueBountyProject(ProposeProjectWithBudgetsInput input)
 {
     Assert(State.DAOMemberList.Value.Value.Contains(Context.Sender),
            "Only DAO Member can propose bounty project.");
     return(ProposedToUpdateProjectWithBudgetPlans(input, ProjectType.Bounty));
 }
Ejemplo n.º 3
0
 public override Hash ProposeProjectToParliament(ProposeProjectWithBudgetsInput input)
 {
     return(ProposedToUpdateProjectWithBudgetPlans(input, ProjectType.Grant));
 }