Exemple #1
0
        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);
            }
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }