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); }
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)); }
public override Hash ProposeProjectToParliament(ProposeProjectWithBudgetsInput input) { return(ProposedToUpdateProjectWithBudgetPlans(input, ProjectType.Grant)); }