private async Task <ContractRequirement> GatherContractRequirementIdAndName(int workItemId) { var requestUri = "/APHP/_apis/wit/workitems/" + workItemId + "?api-version=3.0"; var method = new HttpMethod("GET"); var request = new HttpRequestMessage(method, requestUri) { }; var response = await _client.SendAsync(request); string wiqlWorkItem = await response.Content.ReadAsStringAsync(); JObject jo = JObject.Parse(wiqlWorkItem); ContractRequirement currRequirement = new ContractRequirement(Convert.ToInt32(jo["id"]), jo["fields"]["System.Title"].ToString()); return(currRequirement); }
public async Task <List <ContractRequirement> > UpdateContractRequirementsAndAllLinks(List <ContractRequirement> contractRequirements) { List <ContractRequirement> res = new List <ContractRequirement>(); GatherAllCrpSessionAndPlaybookInTfs(); using (var progress = new ProgressBar()) { double totalCount = contractRequirements.Count; double currCount = 1; foreach (ContractRequirement curr in contractRequirements) { currCount += 1; progress.Report(currCount / totalCount); //List<CrpSession> newCrpSession = new List<CrpSession>(); //foreach(CrpSession currCrpSession in curr.CrpSession) //{ // CrpSession newSession = await CreateOrUpdateCrpSession(currCrpSession); // newCrpSession.Add(newSession); //} //List<Playbook> newPlaybooks = new List<Playbook>(); //foreach(Playbook currPlaybook in curr.Playbooks) //{ // Playbook newPlaybook = await CreateOrUpdatePlaybook(currPlaybook); // newPlaybooks.Add(newPlaybook); //} //ContractRequirement tempCurr = curr; //tempCurr.CrpSession = newCrpSession; //tempCurr.Playbooks = newPlaybooks; ContractRequirement newContractRequirement = await UpdateSingleContractRequirement(curr); res.Add(newContractRequirement); } } return(res); }
public void Post(ContractRequirement entity) { _contractRequirementRepository.InsertAsync(entity); }
private async Task <ContractRequirement> UpdateSingleContractRequirement(ContractRequirement contractRequirement) { //if (contractRequirement.CrpSession.Count == 0) //{ // return null; //} List <Object> patchDocument = new List <object>(); if (contractRequirement.Validated != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.Validated", value = contractRequirement.Validated }); } if (contractRequirement.DeScopeDetails != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.DeScopeDetails", value = contractRequirement.DeScopeDetails }); } if (contractRequirement.ValidationAssumptions != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.AssumtionsInValidation", value = contractRequirement.ValidationAssumptions }); } if (contractRequirement.SolutionUnderstanding != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.SolutionUnderstanding", value = contractRequirement.SolutionUnderstanding }); } if (contractRequirement.VendorIntegration != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.VendorDependency", value = contractRequirement.VendorIntegration }); } if (contractRequirement.Coverage != null) { patchDocument.Add(new { op = "add", path = "/fields/MES.Coverage", value = contractRequirement.Coverage }); } foreach (CrpSession crpSession in contractRequirement.CrpSession) { string link = _uri + "APHP/_apis/wit/workitems/" + crpSession.CrpSessionId; patchDocument.Add(new { op = "add", path = "/relations/-", value = new { rel = "System.LinkTypes.Related", url = link } }); } if (contractRequirement.Playbooks != null) { foreach (Playbook playbook in contractRequirement.Playbooks) { string link = _uri + "APHP/_apis/wit/workitems/" + playbook.PlaybookId; patchDocument.Add(new { op = "add", path = "/relations/-", value = new { rel = "System.LinkTypes.Related", url = link } }); } } if (contractRequirement.ProductDSD != null) { foreach (ProductDsd productDsd in contractRequirement.ProductDSD) { string link = _uri + "APHP/_apis/wit/workitems/" + productDsd.ProductDsdId; patchDocument.Add(new { op = "add", path = "/relations/-", value = new { rel = "System.LinkTypes.Related", url = link } }); } } //serialize the fields array into a json string var patchValue = new StringContent(JsonConvert.SerializeObject(patchDocument), Encoding.UTF8, "application/json-patch+json"); var requestUri = "APHP/_apis/wit/workitems/" + contractRequirement.RequirementID + "?api-version=3.0"; var method = new HttpMethod("PATCH"); var request = new HttpRequestMessage(method, requestUri) { Content = patchValue }; string requestTxt = await request.Content.ReadAsStringAsync(); var response = await _client.SendAsync(request); _logger.LogUriAndPackage(requestUri, requestTxt); string responseTxt = await response.Content.ReadAsStringAsync(); _logger.Log(responseTxt); if (response.IsSuccessStatusCode) { return(contractRequirement); } else { return(null); } }
public async Task <List <ContractRequirement> > GatherAllContractRequirements(List <ContractRequirement> requirements) { List <ContractRequirement> res = new List <ContractRequirement>(); Dictionary <int, ContractRequirement> requirementMapping = new Dictionary <int, ContractRequirement>(); foreach (ContractRequirement requirement in requirements) { requirementMapping[requirement.RequirementID] = requirement; } string wiql = @"Select [System.Id] FROM WorkItems WHERE [System.WorkItemType] = 'Contract Requirement' AND ([System.Title] CONTAINS 'OPSS' OR [System.Title] CONTAINS 'PLMS')"; WiqlQuery query = new WiqlQuery { query = wiql }; var patchValue = new StringContent(JsonConvert.SerializeObject(query), Encoding.UTF8, "application/json"); var requestUri = "/APHP/" + _project + "/_apis/wit/wiql?api-version=3.0"; var method = new HttpMethod("POST"); var request = new HttpRequestMessage(method, requestUri) { Content = patchValue }; var requestTxt = await request.Content.ReadAsStringAsync(); _logger.Log(requestTxt); var response = await _client.SendAsync(request); string responseTxt = response.Content.ReadAsStringAsync().Result; _logger.Log(responseTxt); if (response.IsSuccessStatusCode) { string workItem = await response.Content.ReadAsStringAsync(); JObject jo = JObject.Parse(workItem); using (var progress = new ProgressBar()) { JArray items = (JArray)jo["workItems"]; int count = items.Count; int currCount = 1; Console.Write("Gathering all Contract Requirements... "); foreach (JToken currWorkItem in jo["workItems"]) { progress.Report((double)currCount / (double)count); int currentId = Convert.ToInt32(currWorkItem["id"]); if (requirementMapping.ContainsKey(currentId)) { ContractRequirement currContractRequirement = requirementMapping[currentId]; currContractRequirement = GatherSingleContractRequirement(currContractRequirement).Result; res.Add(currContractRequirement); } currCount += 1; } Console.WriteLine(); } } return(res); }
private async Task <ContractRequirement> GatherSingleContractRequirement(ContractRequirement currContractRequirement) { ContractRequirement res = currContractRequirement; var requestUri = "/APHP/_apis/wit/workitems/" + currContractRequirement.RequirementID + "?$expand=relations&api-version=3.0"; var method = new HttpMethod("GET"); var request = new HttpRequestMessage(method, requestUri) { }; _logger.Log(requestUri); var response = await _client.SendAsync(request); string responseTxt = response.Content.ReadAsStringAsync().Result; _logger.Log(responseTxt); if (response.IsSuccessStatusCode) { JObject jo = JObject.Parse(responseTxt); res.RequirementID = currContractRequirement.RequirementID; if (jo["fields"]["System.AssignedTo"] != null) { res.AssignedTo = jo["fields"]["System.AssignedTo"].ToString(); } //if (jo["fields"]["System.Description"] != null) //{ // res.Description = jo["fields"]["System.Description"].ToString(); //} //if (jo["fields"]["System.Title"] != null) //{ // res.RequirementTitle = jo["fields"]["System.Title"].ToString(); //} //if (jo["fields"]["MES.ProposedLanguage"] != null) //{ // res.ProposedLanguage = jo["fields"]["MES.ProposedLanguage"].ToString(); //} if (jo["fields"]["Microsoft.VSTS.Common.Priority"] != null) { res.Priority = Convert.ToInt32(jo["fields"]["Microsoft.VSTS.Common.Priority"]); } if (jo["fields"]["System.State"] != null) { res.State = jo["fields"]["System.State"].ToString(); } //if (jo["relations"] != null) //{ // List<int> relationIds = new List<int>(); // foreach (JToken relation in jo["relations"]) // { // string url = relation["url"].ToString(); // //Console.WriteLine(url.Substring(url.LastIndexOf("/") + 1)); // if (IsDigitsOnly(url.Substring(url.LastIndexOf("/") + 1))) // { // int tempId = Convert.ToInt32(url.Substring(url.LastIndexOf("/") + 1)); // relationIds.Add(tempId); // } // } // List<MectRequirement> allMectRequirements = new List<MectRequirement>(); // foreach (int id in relationIds) // { // MectRequirement singleMectRequirement = new MectRequirement(); // singleMectRequirement = GatherMectRequirementFromId(id).Result; // if (singleMectRequirement.MectRequirementId != 0) // { // //Console.WriteLine("Added MECT Requirement"); // allMectRequirements.Add(singleMectRequirement); // } // } // if (allMectRequirements.Count > 0) // { // //Console.WriteLine("Contract Requirement {0}", allMectRequirements.Count); // res.RelatedMectRequirement = allMectRequirements; // } //} } return(res); }
private List <ContractRequirement> GatherRequirements(Excel.Worksheet worksheet) { List <ContractRequirement> res = new List <ContractRequirement>(); int usedRows = GetUsedRows(worksheet); List <int> existingRequirements = new List <int>(); using (var progress = new ProgressBar()) { Console.Write("Gathering Requirements... "); for (int i = 3; i <= usedRows; i++) { progress.Report((double)i / (double)usedRows); if (!existingRequirements.Contains(Convert.ToInt32(worksheet.Cells[i, 5].Value2.ToString()))) { ContractRequirement currContractRequirement = new ContractRequirement(); currContractRequirement.RequirementID = Convert.ToInt32(worksheet.Cells[i, 5].Value2.ToString()); currContractRequirement.RequirementTitle = worksheet.Cells[i, 6].Value2.ToString(); currContractRequirement.Description = worksheet.Cells[i, 7].Value2.ToString(); currContractRequirement.ProposedLanguage = worksheet.Cells[i, 8].Value2.ToString(); currContractRequirement.PrimaryArea = worksheet.Cells[i, 9].Value2.ToString(); currContractRequirement.State = worksheet.Cells[i, 10].Value2.ToString(); currContractRequirement.Validated = worksheet.Cells[i, 11].Value2.ToString(); if (worksheet.Cells[i, 12].Value2 != null) { currContractRequirement.DeScopeDetails = worksheet.Cells[i, 12].Value2.ToString(); } if (worksheet.Cells[i, 13].Value2 != null) { currContractRequirement.ValidationActionItem = worksheet.Cells[i, 13].Value2.ToString(); } if (worksheet.Cells[i, 14].Value2 != null) { currContractRequirement.ValidationActionItemStatus = worksheet.Cells[i, 14].Value2.ToString(); } if (worksheet.Cells[i, 15].Value2 != null) { currContractRequirement.ValidationAssumptions = worksheet.Cells[i, 15].Value2.ToString(); } if (worksheet.Cells[i, 16].Value2 != null) { currContractRequirement.Deliverable = worksheet.Cells[i, 16].Value2.ToString(); } if (worksheet.Cells[i, 17].Value2 != null) { currContractRequirement.CoveredInCrp = worksheet.Cells[i, 17].Value2.ToString(); } if (worksheet.Cells[i, 18].Value2 != null) { List <string> allCrpSession = ExtractNewLineValues(worksheet.Cells[i, 18].Value2.ToString()); currContractRequirement.CrpSession = new List <CrpSession>(); foreach (string crpSession in allCrpSession) { if (_crpSessionMapping.ContainsKey(crpSession)) { CrpSession currCrpSession = new CrpSession { CrpSessionId = _crpSessionMapping[crpSession], CrpSessionName = crpSession }; currContractRequirement.CrpSession.Add(currCrpSession); } } } if (worksheet.Cells[i, 19].Value2 != null) { currContractRequirement.SolutionUnderstanding = worksheet.Cells[i, 19].Value2.ToString(); } if (worksheet.Cells[i, 20].Value2 != null) { //Console.WriteLine(_opssWorksheet.Cells[i, 20].Value2); List <string> allPlaybooks = ExtractNewLineValues(worksheet.Cells[i, 20].Value2.ToString()); currContractRequirement.Playbooks = new List <Playbook>(); foreach (string playbook in allPlaybooks) { if (_playbookMapping.ContainsKey(playbook)) { Playbook currPlaybook = new Playbook { PlaybookId = _playbookMapping[playbook], PlaybookName = playbook }; currContractRequirement.Playbooks.Add(currPlaybook); } } } if (worksheet.Cells[i, 21].Value2 != null) { List <string> allWorkPackages = ExtractNewLineValues(worksheet.Cells[i, 21].Value2.ToString()); currContractRequirement.WorkPackages = new List <WorkPackage>(); foreach (string workPackage in allWorkPackages) { WorkPackage currWorkPackage = new WorkPackage { WorkPackageName = workPackage }; currContractRequirement.WorkPackages.Add(currWorkPackage); } } if (worksheet.Cells[i, 22].Value2 != null) { List <string> allProductDsd = ExtractNewLineValues(worksheet.Cells[i, 22].Value2.ToString()); currContractRequirement.ProductDSD = new List <ProductDsd>(); foreach (string productDsd in allProductDsd) { if (_productDsdMapping.ContainsKey(productDsd)) { ProductDsd currProductDsd = new ProductDsd { ProductDsdId = _productDsdMapping[productDsd], ProductDsdName = productDsd }; currContractRequirement.ProductDSD.Add(currProductDsd); } } } if (worksheet.Cells[i, 24].Value2 != null) { currContractRequirement.VendorIntegration = worksheet.Cells[i, 24].Value2.ToString(); } if (worksheet.Cells[i, 25].Value2 != null) { currContractRequirement.Coverage = worksheet.Cells[i, 25].Value2.ToString(); } existingRequirements.Add(currContractRequirement.RequirementID); res.Add(currContractRequirement); } } Console.WriteLine(); } return(res); }