private void InsertContractRequirementMectRequirementMapping(ContractRequirementMectRequirementMap map)
        {
            string sql = @"INSERT OR REPLACE INTO MP_ContractRequirementMectRequirementMap AS ContractRequirementMectRequirementMap
                            (ParentContractRequirementId, ChildContractRequirementId)
                            VALUES
                            (@ParentContractRequirementId, @ChildContractRequirementId)";

            using (var conn = GetOpenConnection())
            {
                conn.Execute(sql, map);
            }
        }
        public override void InsertAsync(ContractRequirement entity)
        {
            string sql = @"INSERT OR REPLACE INTO TFS_ContractRequirement AS ContractRequirement 
(ContractRequirementId, RequirementTitle, ProposedLanguage, Priority, Description, AssignedTo, State,
Validated, DeScopeDetails, ValidationActionItem, ValidationActionItemStatus, ValidationAssumptions,
Deliverable, CoveredInCrp, CrpSession, SolutionUnderstanding, ProductDsd, VendorIntegration, Coverage,
PrimaryArea)
VALUES 
(@RequirementId, @RequirementTitle, @ProposedLanguage, @Priority, @Description, @AssignedTo, @State,
@Validated, @DeScopeDetails, @ValidationActionItem, @ValidationActionItemStatus, @ValidationAssumptions,
@Deliverable, @CoveredInCrp, @CrpSession, @SolutionUnderstanding, @ProductDsd, @VendorIntegration, @Coverage,
@PrimaryArea)";

            using (var conn = GetOpenConnection())
            {
                conn.Execute(sql, entity);
            }

            IMectRequirementRepository mectRequirementRepository = new MectRequirementRepository(_connectionString);

            if (entity.RelatedMectRequirement != null)
            {
                foreach (MectRequirement subRequirement in entity.RelatedMectRequirement)
                {
                    ContractRequirementMectRequirementMap map = new ContractRequirementMectRequirementMap();
                    map.ParentContractRequirementId = entity.RequirementID;
                    map.ChildContractRequirementId  = subRequirement.MectRequirementId;

                    InsertContractRequirementMectRequirementMapping(map);

                    mectRequirementRepository.InsertAsync(subRequirement);
                    //InsertMectRequirementAsync(subRequirement);
                }
            }

            //TaskRepository taskRepository = new TaskRepository(_connectionString);

            //foreach (TFSCommon.Data.Task subTask in entity.RelatedTasks)
            //{
            //    ContractRequirementTaskMap map = new ContractRequirementTaskMap();
            //    map.ContractRequirementId = entity.RequirementID;
            //    map.TaskId = subTask.TaskId;

            //    InsertContractRequirementTaskMapping(map);

            //    taskRepository.InsertAsync(subTask);
            //}
        }
        public List <ContractRequirementMectRequirementMap> GatherContractRequirementMectMapping()
        {
            List <ContractRequirementMectRequirementMap> res = new List <ContractRequirementMectRequirementMap>();

            int usedOpssRows = GetUsedRows(_opssWorksheet);
            int usedPlmsRows = GetUsedRows(_plmsWorksheet);

            using (var progress = new ProgressBar())
            {
                double totalCount = usedOpssRows + usedPlmsRows - 8;
                double currCount  = 1;
                for (int i = 3; i <= usedOpssRows; i++)
                {
                    currCount += 1;
                    progress.Report(currCount / totalCount);
                    if (_opssWorksheet.Cells[i, 2].Text != "")
                    {
                        ContractRequirementMectRequirementMap currMap = new ContractRequirementMectRequirementMap();
                        //Console.WriteLine(_opssWorksheet.Cells[i, 5].ToString());
                        currMap.ParentContractRequirementId = Convert.ToInt32(_opssWorksheet.Cells[i, 5].Text);
                        currMap.ChildContractRequirementId  = Convert.ToInt32(_opssWorksheet.Cells[i, 2].Text);

                        res.Add(currMap);
                    }
                }

                for (int i = 3; i < usedPlmsRows; i++)
                {
                    currCount += 1;
                    progress.Report(currCount / totalCount);
                    if (_plmsWorksheet.Cells[i, 2].Text != "")
                    {
                        ContractRequirementMectRequirementMap currMap = new ContractRequirementMectRequirementMap();
                        currMap.ParentContractRequirementId = Convert.ToInt32(_plmsWorksheet.Cells[i, 5].Text);
                        currMap.ChildContractRequirementId  = Convert.ToInt32(_plmsWorksheet.Cells[i, 2].Text);

                        res.Add(currMap);
                    }
                }
            }

            return(res);
        }