/// <summary>
        /// Inserts GitHub Users to the database.
        /// </summary>
        /// <param name="objUsers">Object List of Users</param>
        public void InsertUsersToDB(GitHubUsers objUsers)
        {
            mobjSqlConnection.ConnectionString = mobjSqlConnectionStringBuilder.ConnectionString;

            mobjSqlConnection.Credential = mobjCredential;

            try
            {
                mobjSqlConnection.Open();

                mobjDataAdapters[USERS].FillSchema(mobjDTUsers, SchemaType.Source);

                mobjDataAdapters[USERS].FillLoadOption = LoadOption.OverwriteChanges;

                mobjDataAdapters[USERS].Fill(mobjDTUsers);

                foreach (User objUser in objUsers.Items)
                {
                    InsertNewUser(objUser);
                }

                mobjDataAdapters[USERS].Update(mobjDTUsers);

                mobjDTUsers.Clear();

                mobjDataAdapters[USERS].Fill(mobjDTUsers);

                mobjSqlConnection.Close();
            }
            catch (Exception Ex)
            {
                throw new Exception("Failed Insert Users to the database.", Ex);
            }
        }
        /// <summary>
        /// Return up to 1000 Users From github Search.
        /// </summary>
        /// <param name="strQueryPrameter">User Login name to search</param>
        /// <returns></returns>
        public static async Task <GitHubUsers> GetUsersAsync(string strQueryPrameter)
        {
            string      strSearchPath;
            string      strResponseData;
            GitHubUsers objGitHubUsers   = null;
            int         intNumberOfPages = 10;

            try
            {
                for (int intPageNumber = 1; intPageNumber <= intNumberOfPages; intPageNumber++)
                {
                    System.Threading.Thread.Sleep(200);

                    strSearchPath = string.Format(@"search/users?q={0}+type:user&page={1}&per_page=100", strQueryPrameter, intPageNumber);

                    HttpResponseMessage objResponse = mobjClient.GetAsync(strSearchPath).Result;

                    objResponse.EnsureSuccessStatusCode();

                    if (objResponse.IsSuccessStatusCode)
                    {
                        strResponseData = await objResponse.Content.ReadAsStringAsync();

                        if (objGitHubUsers == null)
                        {
                            objGitHubUsers = JsonConvert.DeserializeObject <GitHubUsers>(strResponseData);
                        }
                        else
                        {
                            objGitHubUsers.Items.AddRange(
                                JsonConvert.DeserializeObject <GitHubUsers>(strResponseData).Items);
                        }


                        if (objGitHubUsers.Total_Count < 1000)
                        {
                            intNumberOfPages = (objGitHubUsers.Total_Count / 100) + 1;
                        }
                    }
                }
                return(objGitHubUsers);
            }
            catch (HttpRequestException HttpEx)
            {
                Console.WriteLine(HttpEx.Message);
                throw new Exception("Failed on request Search Users", HttpEx);
            }
            catch (Exception Ex)
            {
                Console.WriteLine(Ex.Message);
                throw new Exception("Failed to get Users Async.", Ex);
            }
        }
        /// <summary>
        /// Updates Extra Users Data from GitHub.
        /// GitHub requests Limit to 5000.
        /// </summary>
        /// <param name="objGitHubUsers">List of GitHub users from the search result</param>
        /// <returns></returns>
        public static async Task <GitHubUsers> GetUsersDataAsync(GitHubUsers objGitHubUsers)
        {
            string strSearchPath;
            string strResponseData;
            User   objUserData = null;

            try
            {
                foreach (User objUser in objGitHubUsers.Items)
                {
                    try
                    {
                        strSearchPath = string.Format(@"users/{0}", objUser.Login);

                        System.Threading.Thread.Sleep(200);

                        HttpResponseMessage objResponse = mobjClient.GetAsync(strSearchPath).Result;

                        objResponse.EnsureSuccessStatusCode();

                        if (objResponse.IsSuccessStatusCode)
                        {
                            strResponseData = await objResponse.Content.ReadAsStringAsync();

                            objUserData = JsonConvert.DeserializeObject <User>(strResponseData);

                            objUser.Update(objUserData);
                        }
                    }
                    catch (HttpRequestException HttpEx)
                    {
                        Console.WriteLine(string.Format("Not all User Data Updated for user: {0}", objUser.Login));
                    }
                }

                return(objGitHubUsers);
            }
            catch (Exception Ex)
            {
                Console.WriteLine(Ex.Message);
                throw new Exception("Failed to get User's Data Async.", Ex);
            }
        }