/// <summary>
        /// Imports the test suites and sections
        /// </summary>
        /// <param name="streamWriter"></param>
        /// <param name="spiraClient"></param>
        /// <param name="testRailApi"></param>
        private void ImportTestSuites(StreamWriter streamWriter, SpiraSoapService.SoapServiceClient spiraClient, TestLink testLinkApi, List <TestSuite> testSuites, int?parentTestFolderId = null)
        {
            //Get the test suites from the TestLink API
            if (testSuites != null)
            {
                foreach (TestSuite testSuite in testSuites)
                {
                    //Extract the user data
                    int testLinkId = testSuite.id;

                    //Create the new SpiraTest test folder
                    RemoteTestCaseFolder remoteTestFolder = new RemoteTestCaseFolder();
                    remoteTestFolder.Name = testSuite.name;
                    remoteTestFolder.ParentTestCaseFolderId = parentTestFolderId;
                    int newTestCaseFolderId = spiraClient.TestCase_CreateFolder(remoteTestFolder).TestCaseFolderId.Value;
                    streamWriter.WriteLine("Added test suite: " + testLinkId);

                    //Add to the mapping hashtables
                    if (!this.testSuiteMapping.ContainsKey(testLinkId))
                    {
                        this.testSuiteMapping.Add(testLinkId, newTestCaseFolderId);
                    }

                    //See if this test suite has any child test suites
                    List <TestSuite> childTestSuites = testLinkApi.GetTestSuitesForTestSuite(testLinkId);
                    if (childTestSuites != null && childTestSuites.Count > 0)
                    {
                        ImportTestSuites(streamWriter, spiraClient, testLinkApi, childTestSuites, newTestCaseFolderId);
                    }
                }
            }
        }
        /// <summary>
        /// Imports the test suites and sections
        /// </summary>
        /// <param name="streamWriter"></param>
        /// <param name="spiraClient"></param>
        /// <param name="testRailApi"></param>
        private void ImportTestSuites(StreamWriter streamWriter, SpiraSoapService.SoapServiceClient spiraClient, APIClient testRailApi)
        {
            //Get the test cases from the TestRail API
            JArray testSuites = (JArray)testRailApi.SendGet("get_suites/" + this.testRailProjectId);

            if (testSuites != null)
            {
                foreach (JObject testSuite in testSuites)
                {
                    //Extract the user data
                    int testRailId = testSuite["id"].Value <int>();

                    //Create the new SpiraTest test folder
                    RemoteTestCaseFolder remoteTestFolder = new RemoteTestCaseFolder();
                    remoteTestFolder.Name        = testSuite["name"].Value <string>();
                    remoteTestFolder.Description = testSuite["description"].Value <string>();
                    int newTestCaseFolderId = spiraClient.TestCase_CreateFolder(remoteTestFolder).TestCaseFolderId.Value;
                    streamWriter.WriteLine("Added test suite: " + testRailId);

                    //Add to the mapping hashtables
                    if (!this.testSuiteMapping.ContainsKey(testRailId))
                    {
                        this.testSuiteMapping.Add(testRailId, newTestCaseFolderId);
                    }

                    //Now get each section in the suite
                    JArray testSections = (JArray)testRailApi.SendGet("get_sections/" + this.testRailProjectId + "&suite_id=" + testRailId);
                    if (testSections != null)
                    {
                        Dictionary <string, int> usedSectionNames = new  Dictionary <string, int>();
                        foreach (JObject testSection in testSections)
                        {
                            //Extract the user data
                            int testRailSectionId = testSection["id"].Value <int>();

                            //See if we have a name for this already in this suite, if so, re-use the existing section name
                            string sectionName = testSection["name"].Value <string>();
                            if (usedSectionNames.ContainsKey(sectionName))
                            {
                                //Add to the mapping dictionary
                                if (!this.testSuiteSectionMapping.ContainsKey(testRailSectionId))
                                {
                                    this.testSuiteSectionMapping.Add(testRailSectionId, usedSectionNames[sectionName]);
                                }
                            }
                            else
                            {
                                //Create the new SpiraTest test folder
                                remoteTestFolder             = new RemoteTestCaseFolder();
                                remoteTestFolder.Name        = sectionName;
                                remoteTestFolder.Description = testSection["description"].Value <string>();

                                //See if we have a parent section already imported
                                int?parentSectionId = testSection["parent_id"].Value <int?>();
                                if (parentSectionId.HasValue && this.testSuiteSectionMapping.ContainsKey(parentSectionId.Value))
                                {
                                    remoteTestFolder.ParentTestCaseFolderId = this.testSuiteSectionMapping[parentSectionId.Value];
                                }
                                else
                                {
                                    //Otherwise just import directly under the suite
                                    remoteTestFolder.ParentTestCaseFolderId = newTestCaseFolderId;
                                }

                                int newTestCaseFolderId2 = spiraClient.TestCase_CreateFolder(remoteTestFolder).TestCaseFolderId.Value;
                                streamWriter.WriteLine("Added test section: " + testRailSectionId);
                                usedSectionNames.Add(sectionName, newTestCaseFolderId2);

                                //Add to the mapping dictionary
                                if (!this.testSuiteSectionMapping.ContainsKey(testRailSectionId))
                                {
                                    this.testSuiteSectionMapping.Add(testRailSectionId, newTestCaseFolderId2);
                                }
                            }
                        }
                    }
                }
            }
        }