/// <summary> /// Create a work item given a submission object /// </summary> public static CreatedWorkItem CreateWorkItem(SubmissionTableEntity submission, string refreshToken) { var url = string.Format(ConfigurationManager.AppSettings["CreateWorkItemUrl"], submission.VsoAccount, submission.TeamProject); // refresh our access token var newToken = DoAuthenticationPost(refreshToken, true, false); var workItem = WorkItemFromSubmission(submission); return(PostWithBearer <CreatedWorkItem, NewWorkItem>(url, newToken.accessToken, workItem).Result); }
/* * Requirements for each Work Item Type: * * Product Backlog Item * { refName: "System.State" }, value: "New" }, * { refName: "System.Reason" }, value: "New backlog item" } * User Story * { refName: "System.State" }, value: "New" }, * { refName: "System.Reason" }, value: "New" } * Requirement * { refName: "System.State" }, value: "Proposed" }, * { refName: "System.Reason" }, value: "New" }, * { refName: "Microsoft.VSTS.Common.Priority" }, value: "X" }, * { refName: "Microsoft.VSTS.Common.Triage" }, value: "Pending" }, * { refName: "Microsoft.VSTS.CMMI.RequirementType" }, value: "XXXXXX" }, * { refName: "Microsoft.VSTS.CMMI.Committed" }, value: "No" }, * { refName: "Microsoft.VSTS.CMMI.UserAcceptanceTest" }, value: "Not Ready" } */ private static NewWorkItem WorkItemFromSubmission(SubmissionTableEntity submission) { var workItem = new NewWorkItem(); var fields = new List <Field>() { new Field { field = new FieldName { refName = "System.WorkItemType" }, value = submission.WorkItemType }, new Field { field = new FieldName { refName = "System.AreaPath" }, value = submission.TeamProject }, new Field { field = new FieldName { refName = "System.IterationPath" }, value = submission.TeamProject }, new Field { field = new FieldName { refName = "System.Title" }, value = submission.Item1Votes >= submission.Item2Votes ? submission.ItemTitle1 : submission.ItemTitle2 }, new Field { field = new FieldName { refName = "System.Description" }, value = submission.Item1Votes >= submission.Item2Votes ? submission.ItemDesc1 : submission.ItemDesc2 } }; switch (submission.WorkItemType) { case "Product Backlog Item": fields.Add(new Field { field = new FieldName { refName = "System.State" }, value = "New" }); fields.Add(new Field { field = new FieldName { refName = "System.Reason" }, value = "New backlog item" }); break; case "User Story": fields.Add(new Field { field = new FieldName { refName = "System.State" }, value = "New" }); fields.Add(new Field { field = new FieldName { refName = "System.Reason" }, value = "New" }); break; case "Requirements": fields.Add(new Field { field = new FieldName { refName = "System.State" }, value = "New" }); fields.Add(new Field { field = new FieldName { refName = "System.Reason" }, value = submission.Item1Votes >= submission.Item2Votes ? submission.ItemDesc1 : submission.ItemDesc2 }); //todo: more fields required for CMMI break; } workItem.fields = fields.ToArray(); return(workItem); }